Changed `Sum64()` / `Sum32()` to use `intermediateDigest`. Now sum can be called multiple times without resetting the hash.

Using `runtime.SetFinalizer` to ensure there aren't any memory leaks since we switched to using `intermediateDigest`.

Changed BlockSize() to match the native version and return the correct recommended blocksize.