Add KeyPair handling

Define a KeyPair class which handles generation of secret and public
keys for the NaCL system, and can also do some basic sanity checks of
keys. i.e. are they possibly valid?
Added Crypto::Boxer

The Crypto::Boxer class encrypts and decrypts to the shared key defined
by a private, secret key pairing.  Exceptions are raised on invalid
inputs and if the message authenticator fails to validate before
decryption.
Add copyright
Good bye KeyPair, hello SecretKey and PublicKey

Instead of one class to manage both keys, split the responsibility over
two.  Crypto::SecretKey is responsible for generating a keypair, and
might eventually also derive the public key rather than requiring it be
passed in.  The PublicKey class just accepts a string.  Both will reject
invalid strings and have a few helper functions.
Add in conditional addition of randombytes

If we need it, add a function definition for the randombytes function.
This should fix building on travis.
Typo fix
Now using libsodium

Hooray, we now have a proper portable distribution of NaCl to use, so
this changes over the C extension to use that.  The next step is to
ffi-ize the library, so that it works on jruby or anywhere.
Now using ffi

But still with the extcode there for the moment.  Also, only the hash
calculation is ffi'd at the moment, but that passes.
Keypair generation now ffi-ized

Which is nice.
Add Crypto::Util.zeros

A lot functions require specific buffers of zeros, so make a function to
provide them!
Define a wrap_function macro

This makes calling functions saner, both in terms of length and also in
returning true/false when they work or fail.
Finish conversion to FFI

All functions previous implemented now working via FFI.
Remove the C-ext
Merge pull request #1 from namelessjon/dev/public-key

Add classes for dealing with public key crypto in NaCL