Refactor and adding a concatinating file checksum

Excuse me if this is a bit clumsy, this is my first pull request.  I created a package with checksumming that was similar on another project and saw yours and I thought I could merge some of the code for a possible pull request.  

* I retooled some of the internal methods pretty significantly primarily for readability and simplicity.
* I also removed the panics in favor of more idiomic go errs, with err in the signature I think it's better if people using the package are explicitly informed that they need to account for an error.   Otherwise they would never know to build a recover unless they examine the source code directly.
* I added a method to do a rolling checksum over a multipart file as a number of people I know who do checksums have to do it over fileparts (often sliced in storage like S3)

Lastly I removed the example files and just write them to temp space as part of the test suite and remove them after.  The examples in example/main.go would likely be better off moved to docstring examples as well, which I will be happy to do if you accept the pull request. 

Thanks for considering it.