The old Binary instance for Char used Data.Char.chr, which calls error if given an invalid code point. The instance is modified to call fail instead of error on invalid code points, which is total (within the Get Monad). Calls to error inside Get will escape decodeOrFail.
Natural is a new data type that comes with base-4.8 (GHC 7.10). We serialize it in the same way as we do with Integer. Since this is a new data type there are some ugly CPPs to handle whether Natural is there or not. Serialization tests have been added as well. Since QuickCheck doesn't yet implement instance Arbitrary Natural we do a workaround here. This fixes #63.