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.
More edoc cleanup
Add concurrency control to vnode initialization

Also, a bit of code cleanup.
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.
Merge pull request #274 from basho/eas-parallel-vnode-init

Allow parallel vnode initialization
Change webmachine dependency to roll back to working version

Addresses temporarily basho/riak#280
fix dialyzer warnings in vnode manager

addresses:
  L560: Function update_forwarding/3 has no local return
  L563: Record construction [...] violates the declared type of field forwarding::'undefined' | [pid()]
  L670: The pattern [{MI, Node} | _] can never match the type 'undefined' | [pid()]
  L672: The pattern [{MI, Node} | _] can never match the type 'undefined' | [{_,integer(),pid(),atom()}]
fix dialyzer warnings in node watcher

addresses:
  L756: The created fun has no local return
  L757: The call erlang:apply(Mod::atom(),Func::atom(),nonempty_improper_list('undefined' | pid(),byte())) will
        never return since it differs in the 3rd argument from the success typing arguments:
        (atom() | tuple(),atom(),[any()])
  L757: Cons will produce an improper list since its 2nd argument is byte()
  L770: Function health_check_result/2 will never be called
fix dialyzer warnings in handoff manager

addresses
  L163: The pattern [...] can never match the type {'error','max_concurrency'}
  L504: Record construction [...] violates the declared type of field mod_src_tgt::'undefined' | {atom() | tuple(),integer(),integer()}
remove reference to riak_obect:bucket() type

it doesn't exist in core. fixes dialyzer warning about non-existent type
remove dead code block in ring handler (found via dialyzer)

riak_core:wait_for_application/1 has never returned anything besides ok
(it has no timeout) unlike its predecessor.

Code changed to remove timeout/error in this commit:
https://github.com/basho/riak_core/commit/63334d332a18e596539559fa19556698a7520fd4
address some dialyzer warnings in riak_core_ring

addresses:
  L241: Record construction [...] violates the declared type of field vclock::'undefined' |
        vclock:vclock() and meta::'undefined' | dict()
  L305: Function fresh/0 has no local return
  L312: Function fresh/1 has no local return
  L318: Function fresh/2 has no local return
  L321: Record construction [...] violates the declared type of field nodename::atom() and
        clustername::'undefined' | {atom(),_} and members::'undefined' | [{atom(),{'down' |
        'exiting' | 'invalid' | 'joining' | 'leaving' | 'valid',vclock:vclock(),[]}}] and
        claimant::atom() and seen::'undefined' | [{atom(),vclock:vclock()}]
  L1013: Function reconcile_divergent/3 will never be called
  L1062: Function reconcile_next/2 will never be called
  L1075: Function reconcile_divergent_next/2 will never be called
  L1091: Function substitute/3 will never be called
  L1092: The created fun has no local return
  L1103: Function reconcile_ring/3 will never be called
  L1229: Function equal_cstate/2 has no local return
  L1232: Function equal_cstate/3 has no local return
  L1241: Record construction [...] violates the declared type of field
         vclock::'undefined' | vclock:vclock() and chring::'undefined' |
         {integer(),[{integer(),_}]} and meta::'undefined' | dict() and
         clustername::'undefined' | {atom(),_} and members::'undefined' | [{atom(),
         {'down' | 'exiting' | 'invalid' | 'joining' | 'leaving' | 'valid',vclock:vclock(),[]}}]
          and seen::'undefined' | [{atom(),vclock:vclock()}] and rvsn::'undefined' |
          vclock:vclock()

does not address:
  L240: Function nearly_equal/2 has no local return
  L430: Function reconcile/2 has no local return
  L965: Function internal_reconcile/2 has no local return
  L1014: Function reconcile_divergent/3 has no local return
  L1104: Function reconcile_ring/3 has no local return
  L1252: The pattern 'true' can never match the type 'false'
Merge pull request #270 from basho/jrw-dialyzer-fixes

Dialyzer Fixes
Merge branch 'master' into eas-fix-edoc
Improve doc for node watcher, remove dead(ly) code