[new] suspendable HLet using promises and futures

it is more robust to use these features than the continuations. It does
not change anything actually, we just write everything explicitely
instead of letting the compiler transform the code to CPS. Moreover,
this will allow to use any `ExecutionContext' that the user may want to
use (preemptive threads, cooperative multitasking, ...)

there are two methods allowing you to suspend computation of the current
`HLet'.
 - You may use the `suspend[T]' method that returns a `Future[T]' to be
   used in a for-comprehension.
 - You may use the `suspend[T](resume: T => Unit)' method that allows a more CPS
   way of programing. This method returns a `Future[Unit]'
These methods are only available in `HSuspendableLet'