Modifications to axis.py to allow more flexibility in positioning axis lines, ticks, etc.

I've been to trying add more flexible control over the axis lines, ticks, tick labels, etc., but I think I'm in over my head on this project. Again and again, I've settled on one approach only to completely rewrite it the next time I look at the code. I'm looking for some major design advice/ideas that will make the code simpler (AND maintain compatibility with the current implementation of Axis and Tick objects).

For simplicity, I've only made changes to the x-axis. Since this involves some major changes, I wrote this as a module that subclasses XTicks and XAxis as opposed to a patch on axis.py (which would be the ultimate, but at this point unlikely, goal). The attached module is quite long at the moment, but most of it is comments and methods copied (but slightly modified) from `axis.py`. I tried to document how/why the method has changed if I copied the method.

Sorry for the code dump.
-Tony

axis_mod.py (19.6 KB)