PB client connection pool optimization

This is a small optimization to the old underlying Riak PB client's
connection pool. The semaphore permits were used for connection
creation rather than access to the pool itself.

In an edge case where the pool was at max number of connections and
all connections were checked out, a thread would wait for a permit,
time out (because the pool was at max) then throw an exception. If a
connection had been returned to the pool in the meantime it would
go unnoticed.

This is not really a big issue as the current IRiakClient implementations
at the top of the client stack would simply retry the operation. The only
real impact is that any FIFO guarantees would then be lost affecting the
predictability of which thread (if any) would not get a connection and the
time spent trying to do so.

This change makes the semaphore permit responsible fo access to the pool
itself; it now represents how many connections are checked out. Barring
an issue in creating a new connection once you have a permit you will
receive a connection. When a connection is released by the client a permit
is also released.
Add expected and actuall code into bad message code expection in recieve_code method of pbc.RiakConnection
removed the connection acquire retry

Retrying the connection attempt a couple nanoseconds later if it
failed is unlikely to help
Moved warmUp finished semaphore changes

It made much more sense for warmUp() to be called from doStart()
and this finishes all the changes to where the semaphore controls
access to the pool itself rather than the connection creation
Added argument checks for indexes

Attempting to use `null` as an argument will now throw an
IllegalArgumentException rather than a NullPointerException later

fixes #242
Merge pull request #228 from kkalin78/master

Add expected and actuall code into bad message code expection in recieve_code method of pbc.RiakConnection
RiakLink checks arguments

Will now throw an IllegalArgumentException if anything is null
Merge pull request #247 from basho/gh244-add-link-args

RiakLink checks arguments
Fixed storing POJO with null key

Removed the checks for @RiakKey annotated fields being null.

StoreObject.execute() will now throw an IllegalArgumentException if
there's a null key and withoutFetch() has not been specified.
Merge pull request #243 from basho/gh242-index-null-pointer

Added argument checks for indexes
removed unused import
Updates HTTP client to 4.2.5.
Updates Jackson libraries to 2.2.2
Object mapper at JsonConverter is now a singleton instance.
Object mapper return method should be static.
Merge pull request #248 from basho/gh245-pojo-with-null-key

Fixed storing POJO with null key
Merge pull request #230 from basho/pb-connection-pool-permit-fix

Pb connection pool permit fix
Merge pull request #254 from guidomedina/gmedina-optimize-jsonconverter-objectmapper

Object mapper at JsonConverter is now a singleton instance.
Merge pull request #252 from guidomedina/gmedina-update-httpclient

Updates HTTP client to 4.2.5
Merge pull request #253 from guidomedina/gmedina-update-jackson

Updates Jackson libraries to 2.2.2