Direct byte buffer implementation for Hash

Includes implementations for SHA-256, SHA-512 and BLAKE2.
As far as I can tell, `assert` can be enabled/disabled. My suggestion is to add another method at https://github.com/abstractj/kalium/blob/master/src/main/java/org/abstractj/kalium/crypto/Util.java. Like:

```
public static void checkCapacity(ByteBuffer out, int size){
        if (!out.isDirect()) throw new IllegalArgumentException("Some message here");
        if (out.capacity() != BLAKE2B_OUTBYTES throw new IllegalArgumentException("Some message here");
    }
```