Iso 2022 jp - implement charset codec

With help from @kuroda and @mikel, I have implemented the CharsetCodec which @jeremy suggested in the original PR (https://github.com/mikel/mail/pull/534).

I have simply moved things around - it should work exactly the same as the original iso-2022-jp branch AFAIK.