It turns out that the Ruby stdlib WeakRef class is
completely broken.
http://bugs.ruby-lang.org/issues/4168
While it is fixed in trunk, it is not useable, so
as a temporary measure, use the `ref` gem as a
dependency. It appears to be both faster and more
correct.
in between the weakref_alive? check and the actual
dereference via `__getobj__` the weak reference
could have been collected. It's better to just go
ahead and do the deref. If it throws an error,
then we know it didn't work.