Return safe serializers in nested adapters using NullSerializer

As mentioned in #19 and #16.

This implements the `NullObject` pattern, in which we return a chainable `NullSerializer` object for all messages except `#to_hash`, which returns `nil`.