Allow Sodium::Buffer::empty to take a block

Virtually the entire use-case of Sodium::Buffer::empty is to actually
fill it with some data. To simplify this, we yield it to a block and
return it afterward.
Add Sodium::Random to generate random numbers using libsodium functions
Use Sodium::Random for key and nonce generation
Share a mutex between Sodium::Random and internal uses of the RNG

According to the documentation for libsodium, the randombytes API isn't
thread-safe, so we need to ensure all library uses of the API (including
crypto_sign_keypair and crypto_box_keypair) go through the same mutex.
Use new Sodium::Buffer block syntax
Merge pull request #9 from stouset/add-random

Add Sodium::Random random number generation