Implement vnode overload protection
Rewrite and extend the vnode overload protection logic

The primary change is the addition of a fast path method for adjusting
the estimated mailbox size of a vnode. The vnode proxy now sends a ping
to the vnode after a configurable number of messages.  If the vnode
replies, the vnode proxy knows that all messages sent before the ping
have been handled and therefore it can adjust the mailbox estimate
accordingly. In the common case, this ping/pong approach keeps the
mailbox estimate up-to-date without ever falling back to the more
expensive process_info call.

Minor changes:
-- When a message is dropped, the `dropped_vnode_requests_total` counter
   is incremented.
-- When a vnode exits, the proxy resets its overload state.
-- Overload parameters are now configurable via application variables.

The `vnode_overload_threshold` setting determines the overload threshold.
If a vnode mailbox ever reaches this number, the corresponding vnode proxy
starts dropping messages. When set to `undefined`, overload protection is
disabled and the vnode proxy uses the older/more efficient code path.

The `vnode_check_request_interval` setting sets the frequency of mailbox
pings. After this number of messages have been forwarded by the proxy,
the proxy will send a ping message.

The `vnode_check_interval` setting sets the maximum number of messages
that can be sent before the proxy will directly query the vnode mailbox
size using process_info.
Merge branch 'jdb-vnode-proxy-overload-1.2' into jdb-vnode-proxy-overload-1.3
Merge pull request #314 from basho/jdb-vnode-proxy-overload-1.3