Dialyzer fixes

Start of some work to remove warnings and other bugs in our data-types. 

Still TODO:

- [ ] orset_bm.erl:24: Expression produces a value of type ['true'], but this value is unmatched
- [ ] orset_bm.erl:103: Expression produces a value of type 'ok' | {'merge',pid(),_}, but this value is unmatched
- [ ] riak_dt_vvorset.erl:125: The call riak_dt_vvorset:remove_elem('error' | {'ok',_},Elem::any(),ORSet::{_,_}) does not have an opaque term of type riak_dt_vvorset:vvorset() as 3rd argument
- [ ] riak_dt_vvorset.erl:158: The call riak_dt_vclock:merge([maybe_improper_list(),...]) does not have a term of type [riak_dt_vclock:vclock()] (with opaque subterms) as 1st argument
- [ ] riak_dt_vvorset.erl:163: Invalid type specification for function riak_dt_vvorset:is_active_or_removed/5. The success typing is ([any()],[any()],[{_,_}],[{_,_}],[{_,_}]) -> {0 | 1,maybe_improper_list()}
- [ ] riak_dt_zorset.erl:62: Invalid type specification for function riak_dt_zorset:new/0. The success typing is () -> riak_dt_multi:multi()
- [ ] riak_dt_zorset.erl:66: Invalid type specification for function riak_dt_zorset:value/1. The success typing is ({riak_dt_vvorset:vvorset(),_}) -> [{_,_}]
- [ ] riak_dt_zorset.erl:72: Invalid type specification for function riak_dt_zorset:value/2. The success typing is ('size' | {'contains',_},{riak_dt_vvorset:vvorset(),_}) -> boolean() | non_neg_integer()
- [ ] riak_dt_zorset.erl:83: The call riak_dt_multi:update({'update',[riak_dt_zorset:zorset_op(),...]},Actor::any(),ZORSet::any()) contains an opaque term as 1st argument when terms of different types are expected in these positions
- [ ] riak_dt_zorset.erl:95: Invalid type specification for function riak_dt_zorset:merge/2. The success typing is (riak_dt_multi:multi(),riak_dt_multi:multi()) -> riak_dt_multi:multi()
- [ ] riak_dt_zorset.erl:99: Invalid type specification for function riak_dt_zorset:equal/2. The success typing is (riak_dt_multi:multi(),riak_dt_multi:multi()) -> boolean()