Refactor `Conn.Receive()` and decoders.

* Define a `Decoder` interface for custom and default decoders, and a
  `Decoders` type.
* Expose the default decoder map as `DefaultDecoders`.
* Add `Conn.{Register, Unregister}Decoder()` for registering and
  removing custom decoders. `Conn.Decoder()` returns a registered
  custom decoder, or the default decoder if the `Conn.DecodeDefault`
  option is set.
* `Close()` now removes all pending updates and channel subscriptions.
* `Add `Conn.Registered()` for indicating whether a client is subscribed
  to a specific channel.
* Remove `Reply.CanSpool()`.