JCBC-551: Implements a synchronous API around the Observable layer.

Motivation
----------
While providing an asynchronous API is one of the best ways to implement scalable
applications, we fully recognize that it is probably harder to get started. Also,
many times the expresiveness and power of async is not needed and a similar
sync API gets the user to his goals faster.

Modifications
-------------
As a result, a sync wrapper around the async API has been added. Note that this
IS A BREAKING change compared to beta1, because the Interfaces are now doing
the blocking operations.

The proper one-line fix is to call .async() on the sync object to get access
on the underlying async one.

Note that this change also adds explicit timeouts to the environment.

Result
------
User are now able to use both a sync and async API depending on their needs
and skillsets, providing the best possible experience from start to production
grade applications.

Change-Id: I274e0bcea52f3f91173088d4fb94f5d6697dbf10
Reviewed-on: http://review.couchbase.org/41352
Reviewed-by: Michael Nitschinger <michael.nitschinger@couchbase.com>
Tested-by: Michael Nitschinger <michael.nitschinger@couchbase.com>