crc32: overhaul.

* zip spec says that "All fields unless otherwise noted are unsigned" so lets go with that (matches most crc32.c implementations)
* make sure we receive buffers to combat issues with encoding and such.
* allow getting hex version of digest