Support for Blake2b in keyed mode

With test vectors taken from the C# implementation

This begins to show the ugliness of the existing encoding API leaking out. It's
probably more important to support the key parameter.

Blake2b supports more options than just a key (e.g. a salt for randomized
hashing, personalization string, fanout, etc) so it might make sense for
the second parameter to be an options hash.
Extract Blake2b into a separate class

This almost feels like YAGNI, but I factored Blake2b into a class in order to
make it easier to support more options, including streaming mode. No streaming
mode yet though, sorry :(
Support configurable digest size
Fix 1.9ism
Have Crypto::Hash::Blake2b take an options hash

This factors configuration of digest sizes into the constructor of the Blake2b
class. There are some immediate cleanups, but it will be more useful when
Blake2b in streaming mode is supported.
Encoding support for Blake2b#hash
Merge pull request #57 from cryptosphere/blake2b-keyed

Support for Blake2b in keyed mode