WIP: 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 ``encoding=ENCODING`` parameter to methods to control what encoding data is returned/passed in.
* encoding parmater supports passing in a custom encoder object
* Encoding system supports registering of new encoders through ``nacl.encoder.register``.