Re-write ContentIdentifier

* Simpler, more efficient data types
* Output to standard urn:<hash>:<digest> format
* More efficient serialization through builders and enum
groupBy implementation for Data.Machine