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.