Added "ChainedRunnableListenableFuture" implementation
This implementation makes it easier to chain work units on to the futures of previous computation.  This has proven to be able to make a MASSIVE performance improvement given the right situations.  But it is tricky, and it has a lot of dangers that you have to watch out for or handle (primarily around heap usage and stack overflows).