cherry pick 5de7972 into 1.3 branch (backporting)

It was desired to have the riak_core_vnode_worker_pool race from
basho/riak_core#300 backported to the 1.3 branch. The parent commit
containing the regression tests for this race has been elided, since
it requires changes to poolboy that are not otherwise required to
fix the issue (so there is no need to roll a new poolboy version).

Original commit message:

fix races between riak_core_vnode_worker_pool and poolboy

This patch fixes both races demonstrated by the test in the previous
commit, and described in #298.

The fix for the checkin race is for the worker to only checkin to
riak_core_vnode_worker_pool, and allow riak_core_vnode_worker_pool to
decide when to checkin to poolboy. If there is outstanding work in the
queue, the worker will just be reused immediately instead of being
checked in.

The fix for the DOWN race is for the worker to send a 'worker_started'
message to riak_core_vnode_worker_pool, when the worker starts. While
the worker is sending this message, poolboy is blocking, so
riak_core_vnode_worker_pool can send poolboy a checkout message
immediately, and still be guaranteed that it will be received after
poolboy has put the worker in its pool.

Documentation about how this works, and about how
riak_core_vnode_worker_pool is acting as a queue wrapper around the
pool, is also included.
Merge pull request #307 from basho/bwf-pool-race-1.3

Backport issue 300 to 1.3 branch