* Function to auto-optimize number of thread pool threads based on
  benchmark results
* Right now future-id is generated by gensym. This might be a global
  lock
* Obtain system processor/core information (need a library to do this)
  and make a thread pool for each processor, where all the threads
  have their affinity set to that processor. This should alleviate
  contention for the thread pool locks and cache-coherency protocol
  thrashing, but will require implementing things like work-stealing
  queues.
* Show how to combine futures with STM
* Extend futures to distributed system
* Build better thread/machine pool system
* Future pipelining
