Composite Axis and Scale

This is still a work in progress, so there is much room for improvement.

This is a branch from Bill Dwyer's branch for composite ordinal scales. I've added a composite axis to complement the composite ordinal scale, since the category axis didn't seem to have enough power.

An example of this feature can be seen in ```composite-quicktest.html```

Here's a brief overview on the changes:

Composite Ordinal Scale:
Overall, I didn't make many changes from what Bill had originally. I added a few methods to make calculating the label positions easier. The way these methods work is by taking an array of keys, which may just be a prefix of a valid array of keys.

Composite Axis:
This class extends Category Axis, and will show variable ticks lengths and labels for all levels. Most of the _doRender method is copied from categoryAxis, so there may be a way to simplify this code. I can rename this to Composite Category Axis, but I'm not sure if we're going to make a Composite Numeric axis, though I can see a Composite Time Axis (with different intervals of time) of some sorts being created in the future.

All suggestions and questions are welcome.
`(d: string[]) => ...` will still typecheck and be a bit more succinct.