Synchronous commands now use calling thread

Before this change, invoking a command like api.list() would spawn a thread, and then block on it for a period of time.  Managing timeouts became a bear, and typically the only action taken is to increase them.  Meanwhile, the lack of connection between caller and the thread performing work resulted in longer stack traces for those who not using the Async apis.

While this change doesn't really affect those using async calls, it does help those who use synchronous means.  There are three major changes.

 1. code that supplies config keys, fallbacks, and timeouts is now centralized in a documented class called `InvocationConfig`
 2. `HttpCommandExecutorService` now supports synchronous invocation, and this is used when there are no timeouts associated with a command.
 3.  default timeouts are taken off all apis, which allows synchronous commands to benefit from the simplest code path

This is the most significant work towards https://github.com/jclouds/jclouds/issues/1089 and is pretty much close to finish line