Add #riak_core_fold_req_v2 record, use new options for AAE tree building

Add `aae_reconstruction` annotation to the fold request sent by
riak_kv_index_hashtree:fold_keys().

Also add not-forwardable annotation to the AAE hash tree fold,
to address GitHub issue #621.

If riak_kv_vnode:handle_command() gets a #riak_core_fold_req_v1 command,
that command is converted to a v2 command before continuing.  The
?FOLD_REQ.opts proplist is appended to the end of the `Opts` proplist
that is passed to the KV storage manager's Mod:fold_objects/4 function.
WIP in safety commit before I get on a plane / through security
WIP mid-atlantic commit of working Proof Of Concept for Maps
WIP PoC for GETting CRDT values as JSON
Use singular for type names in output
Add context to operations

Add pre and post local replica merge operations
Correctly identify the precondition_context fun in export list
Remember to base64 decode the context
add support for differing key versions
WIP
Sort AAE differences before acting upon them via read-repair
Define the type->mod map in the types hrl

Fix bug in riak_kv_crdt where the contextless update was applied to
a `new/0` CRDT rather than the merged result of what's on disk.
Pass MOD_MAP to decode operation
Fake bucket types, and fix broken error message
Create the binary from the precondition context
Plumb the precondition errors into riak_kv_vnode

Split set operations into pre and post ops
Remove non-riak_dt counter and support code
TODO What about 1.4 PB counter message support?
Add QC_OUT macro, my dots were being swallowed.
Merge branch 'develop' into feature/rdb-crdt-general
Add some types and docs, remove gcounter
remove hashtree code and docs

it is being moved to riak_core