Rebase into ToolElements.
Override ToolSectionLabel.to_dict so don't need to_dict_helper.

I feel this is cleaner and it makes ToolSection and ToolSectionLabel easier to move into a new module.
Move ToolSection and ToolSectionLabel out of galaxy.tools directly.

Would like to move the whole ToolBox out of galaxy.tools and into galaxy.tools.toolbox but need to separate all dependencies on galaxy.tools first.
Introduce ToolFactory class to help de-couple `ToolBox` from `Tool`.

The desire for a clean galaxy.tools.toolbox with no dependencies on galaxy.tools is overriding my desire to not look like a Java programmer.
Introduce HasPanelItems abstraction with several benefits.

 - Abstraction allows treating tool panels and sections more uniformly.
 - Using this abstraction for iterating over items eliminates isinstance checks (considered harmful - not ducky enough - http://www.voidspace.org.uk/python/articles/duck_typing.shtml).
 - Eliminates several direct references to the Tool and Workflow classes in ToolBox - (useful toward decoupling ToolBox from galaxy.tools).
Move 95% of ToolBox into its own module.

Including logic related to panels and sections, the integrated tool panels, labels, etc....

Leave a variant of ToolBox in galaxy.tools that needs to know about Tool runtime stuff (actions and dependency management).