Expose access to XSalsa20Poly1305 primitive

This is to start to fix #43

Explicitly expose access to the XSalsa20Poly1305 primitive from the
library.  The primitive class handles all of the input checking, and the
encryption methods.  At the moment, the code has been more or less just
copied across.  Eventually, it might make sense to factor this out into
the SecretBox module.

Also, it's possible that one or other of the method calls might return
something other than a string, augmented with additional information and
methods.
Rename SecretBox primitive

Now more closely mimics C API
Return a Ciphertext object

This behaves approximately like a string, at least for many operations
that a ciphertext is likely to have performed on it.  It also supports
encoding to any encoding recognised by RbNaCl
Allow runtime interrogation of the primitive

Should be a little nicer to work with in a multi-primitive setup
Provide method for querying # of nonce bytes

This allows the RandomNonceBox to funciton in an indeterminate primivite
world.
Note that we're returning a Ciphertext
Ooops, fix RandomNonceBox
Support specification of Box primitive

This obviously defaults to Curve25519XSalsa20Poly1305, which is also the
only primitive currently implemented.

Still need to add the necessary support for changing out the Key, too.
Kill un-needed module
RandomNonceBox now reports primitive used too

Also, specs updated to use TestVectors
Remove Ciphertext

It's breaking the 1.0 API.  That's the price of rushing for 1.0, I
guess.
Protip: Remove the specs, too
Restore NONCEBYTES constant

Though it still isn't documented, in the hope people use the helpful
methods provided.
Remove last traces of ill-fated Ciphertext class

Now it lives only in the history
Merge pull request #46 from cryptosphere/primitive_specification

Primitive specification