Place all classes in modules describing their primitives

cc @namelessjon @stouset

This change places all primitives into their own module. I have to say that by
doing this, the organization of the source code seems much improved to me.

The original API is preserved (with some changes) by aliasing shorthand class
names to their algorithm-specific versions.

The following name changes have been made:

* `RbNaCl::Box` => `RbNaCl::Curve25519XSalsa20Poly1305::Box`
  * `RbNaCl::PrivateKey` => `RbNaCl::Curve25519XSalsa20Poly1305::PrivateKey`
  * `RbNaCl::PublicKey` => `RbNaCl::Curve25519XSalsa20Poly1305::PublicKey`
* `RbNaCl::SecretBox` => `RbNaCl::XSalsa20Poly1305::SecretBox`
* `RbNaCl::SigningKey` => `RbNaCl::Ed25519::SigningKey`
* `RbNaCl::VerifyKey` => `RbNaCl::Ed25519::VerifyKey`
* `RbNaCl::Point` => `RbNaCl::Curve25519::Point`
* `RbNaCl::Auth::OneTime` => `RbNaCl::Poly1305::OneTimeAuth`
* `RbNaCl::Hash::Blake2b` => `RbNaCl::Blake2b::Hash`
* `RbNaCl::HMAC::SHA256` => `RbNaCl::SHA256::HMAC`
* `RbNaCl::HMAC::SHA512256` => `RbNaCl::SHA512256::HMAC`