WIP : major Axes refactor

This branch is the start of work to unify the storage of the artists in the Axes into a single tree.   I think this will simplify the serialization and export code we want to add.  I also think this will make it easier to implement logic to check if a canvas needs to re-drawn.  In all cases, the benefit comes from having a single Artist tree to walk.

The first step of this is to promote `Containers` to be full-class `Artists` and use them for drawing (not just sorting out legend handles and returning).  This will fix the z-order overlap issues with error bar (#409). 

There is some magic in how the broadcasting of the `{set,get}_*` methods works which should probably have some discussion around it.

The sub-class of `list` is so that we can maintain back-compatibility for users that are removing artists by mucking with the internal data structures.

 - [ ] intra-container zorder
 - [ ] update all usage of `Container` sub-classes (only ~5)
 - [ ] unify draw logic to a single tree
 - [ ] make sure all the back compatibility works 
 - [ ] make remove fully clean up after `add_*`
 - [ ] deprecate all of the `add_*` methods
 - [ ] add visitor-pattern API