add convenience methods for creating new maps, sets, and counters

We use several nested maps inside our app, and it would be more convenient to pass around just the map itself to different functions instead of the map *and* the crdt struct pointer. This isn't a critical problem, but it's a little more convenient to have a NewMap, NewSet, and NewCounter function available on map structs. 

The other options for implementing this include stuff like:
1. exposing the unexported `crdt` field on map structs
2. adding an anonymous `Crdt` field on maps

But both those options seem like they create a weird API, so this made most sense to me.