Add an Encoding system instead of adhoc uses of binascii

* Adds an Encoding system that supports raw, hex, base16, base32, and base 64.
* Adds an ``encoder`` parameter to methods to control what encoding data is returned/passed in.