Rewrite deserializers as stream sinks
Introduce deserialize_one and properly handle incorrect containers

deserialize_struct now properly ignores containers it cannot handle
(using the new NullSink()). It is thus required to use deserialize_one
to deserialize a single standalone struct.
Implemented deserialize_container
Implement deserialize_only and use it in the tests