Rollups, and going test crazy.

- Full implementation of all the Rollup types. And tests for all of them. Every one of them.
- Added hashcode as an npm dependency. I found multiple hashcode implementations floating around on the internet, but I used a module to avoid shady licensing issues. We can always replace it later if it needs to be replaced.
- Rollups will allow for a smoother implementation of trends, so I did them first.