Refactor update datatype

For a more explicit User API this breaks out `UpdateDatatype` to
`UpdateMap`, `UpdateSet`, and `UpdateCounter`.

I also changed `DatatypeUpdate` to a non-generic interface.

This does not add Javadoc or any additional ITests.