NCBC-310: Refactor Connection Pool

Refactored the CouchbaseNode class so that it depends upon a different
implmentation of the internal socket pool that utilizes a queue structure
instead of the stack based implmentation used by MemcachedClient. The
PooledSocket now has a new interface, IPooledSocket, with CouchbaseClient
and MemcachedClient having seperate implementations. Note that these
changes only impact CouchbaseClient instances - MemcachedClient instances
still use the older implementation. The benefits of this include: more
efficient resource allocation and management, elimination of threading
some issues related to race conditions and other re-entrency problems,
better structure and code organization, improved unit tests and
testability and overall extensibility of certain components: pools,
socket wrappers, etc.

Change-Id: I2348f60dc8c0b3304cba19753db08d9cd60e570f
Reviewed-on: http://review.couchbase.org/29832
Reviewed-by: Matt Ingenthron <matt@couchbase.com>
Tested-by: Jeffry Morris <jeffrymorris@gmail.com>