(bug 54320) Include datatype in snak serialization.

This refactors the Serializer constructors to allow service injection,
in particular injecting a PropertyDataTypeLookup for the SnakSerializer.

Note that injection is still mostly optional at this point, but should
become required in the future. Where the particular type of serializer
is unknown at construction time, a SerializerFactory can be injected,
e.g. for the ResultBuilder class.

bug: 57212
bug: 57213
bug: 54320

Change-Id: Ib2137ad43600ec7b4fc038fb09b0c257aa5c31e7