Fix invalid use of stack closure type

Previously, the codebase was using the stack closure type ( e.g. |x|
f(x)) to parameterize availability calculations, even though this wasn't
strictly necessary. Also, said closures were borrowed as needed to
facilitate repeated calls to the closure. A recent change to the
compiler has forbidden this usage pattern. Because the closure types
were overkill to begin with, this change fixes the issue by reverting to
using plain function pointers instead (the &fn type).
Fix extern crate double linking issue

This change is clearly a hack, because now disruptor depends on the
calling module to import the crate. In the near future, I'll modularize
the codebase and revisit this issue in the process.
Update README
Port code to newer version of rust

Previous rust version: 97dd72620002ff8476ff62d425eb730fdef513a1
Now building with:     ade02bb5349b9ea5ad47cf8cdd61ad91057148d1