Redo of discriminator support to make syntax much nicer
Cleanup of new discriminator support
 - Removed `DiscriminatorBuilder` in favor of moving combinator methods
   directly to `DiscriminatorCodec`
 - Added new `typecase` combinator that provides similar syntax to old
   type discriminators
 - Removed dead code related to old syntax
 - Removed `DiscriminatorCodecSyntax` and instead, inlined contents in
   `codecs` package object