Add TypedSnak

Simple value object to encapsulate a concept we already have in the code.
Right now we have a "Snak" serializer that pulls in a datatype id, which
really should not happen in a serializer. This object allows cleaning that
up, and is presumably usefull at other places as well.