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.
Add a six.StringFixer which does the right thing with __str__
Add an Encodable mixin that uses the encoder system
Move to passing a full encoder instead of a short string

* This eliminates the global state from the encoding system.
Document the PyNaCl encoding system
Merge pull request #8 from dstufft/encoder

Add an Encoding system instead of adhoc uses of binascii