Fixes #41; Fixed bucketing for the Heat Map

The old implementation used a string based map that would cause issues with certain ranges and numbers of buckets. The new implementation does the following:

* Faster bucketing - uses simple integer math to perform discrete bucketing
* Explicit boundry conditions - Easier to read and ensures out-of-range data is explicitly handled by the routine
* Fixes numerical rendering errors - No longer assuming a string based lookup map allows us to ensure a total order on the prepared buckets.
Merge pull request #44 from fastly/rsandor/fix-bucketing

Fixes #41; Fixed bucketing for the Heat Map