Add thread parking with timeout
FutureVal receive cancel stub, clone, use park

A number of improvements to FutureVal

- Stubbed out the API for canceling a receive request.
  FutureVal::receive() will return an Interest which implements
  cancel().
- Implemented Clone for FutureVal<T> where T is Clone. Works by lazily
  cloning the value when requested by the consumer.
- Switched to using thread park / unpark vs. a dedicated condition
  variable. This is not a huge win as long as the future implementation
  is guarded by a mutex, but eventually it will be lock-free.