Allow vnode init to happen in parallel

Added an extra state to riak_core_vnode to decouple vnode initialization
from process creation.
Added a function to block until initialization is truly finished.
Vnode init call now takes a list of indices or single index.
The list version creates vnode processes first, then waits for them to
initialize, which allows it to happen in parallel.
Used the above in riak_core_ring_handler when starting services
on first ring event.
Tests show I/O saturation at bitcask startup now, instead of the
serialized trickle we had.
This code still needs some work to handle edge cases, specially around
how to handle vnode initialization failing.

Add concurrency control to vnode initialization
New pmap with bounded concurrency utility added with unit tests.

Fix cluster into to query vnode manager, not sup

With the parallel vnode change, there is more reason to not query the
supervisor directly, as its children may not have finished
initialization yet.
Add switch to revert to old vnode init behavior
Fix backwards compatibility of start_vnode

To allow parallel initialization of vnodes without changing the API in a
non-backwards compatible way. To use it, the vnode module has to
implement start_vnodes/1.
Address parallel vnode init review comments
Improve pmap perf by using sets, not lists
Merge pull request #281 from basho/eas-parallel-vnode-init-backport

Porting parallel vnode init fix to 1.3 + revert switch
Make stats more robust in the face of failure

Use pid() for timer call so that a crashing stat cache does
not end up with multiple timers for the same stat mods

In some cases underlying ets tables for stats go away. When this
happens the effected stats break and stay broken.

When a stat is broken the stat calculation throws an error. For
the sake of robustness this commit wraps stat calculation in a try
catch, and returns the atom `unavailable` if a stat cannot be
calculated. Broken stats are expected to be detected and repaired
when they are updated.

Rather than calculate stats on demand when stale, backfill the cache

Always serve the stats that are in the cache, no matter how old they are.
Add a timestamp to the stats so consumers know how stale they are.
Fill the cache continuously in the background.
Failure to calculate a stats value should be temporary so warn only
Merge pull request #288 from basho/kv508-stats-warn

Failure to calculate a stats value should be temporary so warn only
Roll riak_core version 1.3.1
Merge branch '1.3' into 1.3_to_master

Conflicts:
	rebar.config
	src/riak_core_ring_handler.erl
	src/riak_core_util.erl
	src/riak_core_vnode.erl
	src/riak_core_vnode_manager.erl
Restoring dyalizer fix lost in 1.3.1 merge
Merge pull request #296 from basho/1.3_to_master

1.3 to master