Return safe serializers in nested adapters using NullSerializer

As mentioned in #19 and #16.

This implements the [`NullObject` pattern](http://devblog.avdi.org/2011/05/30/null-objects-and-falsiness/), in which we return a chainable `NullSerializer` object for all messages except `#to_hash`, which returns `nil`.