dialyzer fixes for cluster metadata

addresses issue #392

* fix some typespecs in dvvset, riak_core_metadata and metadata manager
* change some opaque types to regular ones
* don't reuse 'remote_iterator' as message to manager process since its
a record too
* fix typo in exchange_fsm that didn't harm anything

This commit does not fix the issues found by dialyzer in
riak_core_metadata_exchange_fsm. Dialyzer isn't able to figure
out we are doing the "right thing" with the iterators here.
allow Context to be undefined in merge/2,3

This fixes the dialyzer errors about breaking the function's contract in
riak_core_metadata_exchange_fsm. That transitively fixes the non-local
return errors in the same module.

The Context is ignored in riak_core_metadata_manager:merge/2,3, so it
could instead be defined as any(), but adding undefined seemed the least
intrusive.
Merge pull request #397 from basho/jrw-cm-dialyzer-fixes

dialyzer fixes for cluster metadata