Various changes:
* fix command line tools so that they exit
* remove ConnectionFuture and ConnectionResultHandler and use ResultFuture/ResultHandler instead
* rename ResultFuture -> FutureResult to align with FutureTask name format
* provide AbstractFutureResult which can be used for handling asynchronous results
* fix FutureResultTransformer so that it does not create a new result for each invocation of get()
* fix ResultChain - remove race conditions, simplify, improve APIs, etc...
* rename ResultChain -> RecursiveFutureResult
* rename ResultTransformer -> FutureResultTransformer
* add getSchemaName() to Schema class for retrieving a user friendly name of a schema (for use in debugging).