Using a hybrid of a future and promise.

Updating the Future to allow a value to be delivered to the future,
making it easier to implement adapters without requiring that a future
is dereferenced before it can be used.
Keeping the name "Future" to not cause confusion as to whether or not it
is a JavaScript like promise.
Using clojure terminology to avoid confusion with other future/promise implementations