Change how the libsodium binding work

Fixes #78
Fixes #49
Fixes #68

Instead of all functions being bound to one central module, a module is
provided which gives an easy API for binding the return values from
libsodium constant functions to rubyland constants.  It also allows
defining ruby functions which wrap the libsodium ones, accounting for
the return value.

Also, we avoid calling specific implementations.
Bump libsodium version

Older versions don't have all the symbols
Move SHA256/512 to their own files

It was a bit lazy not to do so.
Merge pull request #79 from cryptosphere/sodium_module

Change how the libsodium binding work