This is a hack around a language deficiency in C++.  You can't pass around an array (`unsinged int[5]`) between function calls.  You can only pass pointers, which would involve lost of new/free and heap shenanigans.  Thus `Sha1::Digest()` can't return what would be most natural.  The second most natural thing would be a `std::array<unsigned int, 5>`.  However, std::array is a C++11 feature and I didn't want to go down that road, since it is still experimental in GCC v4.8. 

To pass an array into and out of a function it has to be inside of struct or a class.  I chose a class here since there are so many member functions to have the array behave naturally.

The reason why this is public is that it needs to be directly writable from buffers coming from HDF5.  I can add some documentation to this effect, If you'd like.  In the future, this really should just be a std::array.