Update bucket validator to conform to the new inputs/outputs

rather than repeat the documentation at the top of riak_kv_bucket
verbatim, let's just say there were some pretty profound changes
to the inputs and expectations of the validator when bucket types
came along. This PR address those. It also adds validation for
the datatype property that must be set
(along with {allow_mult, true}) on all CRDT buckets.

Sorry it is so big, so late, but major changes beget major changes.
I added eqc tests to make checking for correctness easier.