Properly handle characters outside of charset

The current behavior of using REPLACE on CharsetEncoders and Decoders
means that characters outside of the specified charset will be silently
replaced with another character ('?' for ASCII, \uFFFD for UTF-8, etc).

As indicated by the usage in ByteBufUtil, REPORT is the desired
behavior.  When a character outside of the charset is found, either an
exception is thrown or a CoderResult is returned.  It looks like all
of the code using getEncoder() and getDecoder() expect the REPORT
behavior, not the REPLACE behavior.