Ensure client exceptions return correct failure state to caller

Motivation
----------
When an operation fails before going across the network, the caller needs
to receive the correct error state and information so that they can the
error appropriately. An example would be increasing the PoolConfiuration.MaxSize
of the connection pool if there are not enough connections or increasing the
PoolConfiguration.MaxAcquireIterationCount so that the thread will spend more
iterations waiting for an available connection.

Modifications
-------------
There was a bug were the GetResult() was being called before the
Operation's state was set to indicate an error. By moving the GetResult()
call below this code, the client now returns the correct error status.

Result
------
When a client error is encountered, the caller will recieve the correct
error state and information in the IOperationResult returned by the
client.

Change-Id: Icdcbd64b6e093fc0a4341086f3e110b31a19caf6
Reviewed-on: http://review.couchbase.org/43877
Tested-by: Jeffry Morris <jeffrymorris@gmail.com>
Reviewed-by: Simon Baslé <simon@couchbase.com>