Fix loading of non-UTF8 encoded files

Including adding a command line argument for specifying the encoding.

The CharsetDecoder already does all the hard work, we just needed to pay attention to the CoderResult. New tests are variations of the test case originally producing the hang.

Also removed some dead code while in the area.
I believe those are both fine assuming normal usage of decode(), like we have here. Neither are errors but rather indicating bytes is too small or chars is too small.

For example, UNDERFLOW is returned when the limit() of bytes stops in the middle of a character and isAtEnd is false. If isAtEnd is true (i.e. calling code has no more bytes to give) then MALFORMED is returned instead.