[FINAL] Validating hash when downloading/extracting bundles.

An attempt to validate bundle hashes as they come in the door.  I was able to sha1 hash the file contents as they stream in, avoiding secondary passes over the file contents.

This is a follow on attempt to #32
Typically I avoid using that feature as it can potentially offer a false positive if a different line throws that exception.  By using try/catch blocks instead you can specify which line will throw the exception precisely.