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.
Update to fit Rust's move from slice to Vec.