This module is not using any hsc2hs features
Refactor Ed25519 bindings to use safer functions

No more rooting around in the .Internal guts of ByteString, and
especially no more unsafely packing a buffer than might be about to get
garbage collected.

This revision still uses unsafeUseAsCString instead of malloc, because
it saves us a copy (since otherwise we would need to allocate the
buffer, then copy it into the ByteString).  This should work, but care
must be taken when changing these functions in the future.  Comments
have been inserted to call out the assumptions.

Also, the C code uses unsigned char*, whereas on the Haskell side I am
using CString = Ptr CChar.  This should be safe if we just treat the
data as bytes, but I have inserted a comment about this assumption as
well.
Actually check the size assumptions

We don't want to make assumptions about what the code on the C side
does.  The types in C strictly declare a length, and so we should ensure
that our data is not longer than that.  If it is, the C code is never
even run.

To preserve the API, this causes bottom on size violation for now.
Merge pull request #1 from singpolyma/refactor-Ed25519

Refactor Ed25519