Make the contents of byte-wrapping structs public

This allows users of the library to create keys, read digests, etc.
std::libc moved to its own crate
Array indexes are unsigned now
The Digest buffer should public (fields are private by default now)
Avoid casting by starting with unsigned range()s
marshal: use stack based closures rather than malloc()ed proc()s

This is more appropriate in general, even though there seems to be no
difference in an optimized build.
Revert "The Digest buffer should public (fields are private by default now)"

This reverts commit 69eb7b446256bc9ef2cba3305afdff4705bb77c2.

The reason being that all structs fields should be set to public, better to do
that in one commit.
Merge branch 'PeterReid-master' into rust-master