Axis.Category._requestSpace caches character sizes

# cat-cache
![cat-cash-1](https://cloud.githubusercontent.com/assets/3344958/3379540/75d128fc-fbf3-11e3-8b79-6f9f3f44b7eb.jpg)

`catAxis._requestedSpace` decides how to fit ticks into their bounding boxes by inserting them into the DOM and then measuring them, letter-by-letter. This means a hundred or so touches to the DOM each time you call `_requestedSpace`, which makes it rather slow.

This branch changes `_requestedSpace` to measure and cache the dimensions of each character, and compute their sizes by adding up individual characters. This means you only touch the DOM as many times as you have letters, and caching means that further resizes will be much faster.

Adding up individual characters is only an approximation, but it's fairly accurate, always within `0.05` px of the actual measurement in my tests.

### Before (page load)

![screen shot 2014-06-24 at 4 23 19 pm](https://cloud.githubusercontent.com/assets/3344958/3379726/a177812e-fbf6-11e3-866f-8f2db5c03d7a.png)

### After (page load)
![screen shot 2014-06-24 at 4 22 06 pm](https://cloud.githubusercontent.com/assets/3344958/3379729/b3ca9366-fbf6-11e3-9394-ea941dc7377b.png)

### Before (resize)
![screen shot 2014-06-24 at 4 30 12 pm](https://cloud.githubusercontent.com/assets/3344958/3379790/d37ee3c8-fbf7-11e3-9af2-c6d76e4f0366.png)

### After (resize)
![screen shot 2014-06-24 at 4 29 40 pm](https://cloud.githubusercontent.com/assets/3344958/3379789/d07a9000-fbf7-11e3-982a-36ba20c94f6b.png)


Close #572.
Actually, this won't handle multiple space correctly, since it will measure `"x x"` and `"x   x"` as having the same length. However, this won't be a problem in our case because we always split it into single characters anyway.

I'll make it handle multiple characters properly.