Reused get_section method to hide ToolBox.tool_panel from install_manager.py.
PEP-8 fixes for various Tool Shed components.

 - lib/tool_shed/util/tool_util.py
 - lib/tool_shed/galaxy_install/tool_migration_manager.py.
 - lib/tool_shed/util/shed_util_common.py.
 - lib/galaxy/model/tool_shed_install/__init__.py.
Method to abstract away ToolBox.shed_tool_confs from tool_util.py.

Start a gradual process of referring to these as dynamic tool confs instead of shed tool confs. I would like like to make them more generally Galaxy-managed tool configurations and distinguish them from deployer-managed configurations - rather then having overtly ToolShed-only logic in ToolBox.
Method to abstract away ToolBox.tool_panel from tool_util.py.

Now only thing accessing ToolBox.tool_panel outside ToolBox itself is ToolPanelManager.
Reuse new ToolBox.get_section method in ToolPanelManager.

This is a higher-level method and eliminates a couple more places where Tool Shed code is directly acceessing ToolBox.tool_panel.
Refactor logic for removing tools from panels into ToolBox.

May seem sort of like Tool Shed specific stuff - but I think it can be reused elsewhere down the road. Regardless of this however as of this commit no external components directly access ToolBox.tool_panel or ToolBox.integrated_tool_panel - which I think is important - these should be internal details of the ToolBox (or newer modules it leverages).
Update calls to ToolPanelManager.get_shed_tool_conf_dict for clarity...

... in other words to note where index in the resulting tuple is not actually used. Doing this to enable hiding this implementation detail (index) from components in subsequent commits.
Update ToolBox.update_shed_config to use config_filename instead of index.

Seems a more robust index, simplifies ToolPanelManager, etc....
Simplify ToolPanelManager.get_shed_tool_conf_dict and eliminate direct access ToolBox.shed_tool_confs.
Eliminate another directory access to ToolBox.shed_tool_confs.
More hiding ToolBox.shed_tool_confs (from shed_util_common.py).
More encapsulation of shed_tool_confs - this time from tool shed install models.
Abstract tool lineage handling out of ToolBox.

Start work on infrastructure to support tool lineages not defined within the tool shed install model.
Abstract out higher-level helpers in ToolBox for lineage reasoning.

Reduces code duplication slightly and simplifies __add_tool_to_tool_panel (cyclomatic complexity reduced from 20 to 14).
Improved unit testing support for unit tests.
Allow multiple tools with the same id in ToolBox.

How to use:

 1.) Place multiple tools with different IDs in your tool conf.
 2.) ... ummm ... no step 2 - just use the tools.

Implementation:

The Tool Shed allows tool lineages by assigning each tool version a GUID and tracking versions in a database. This
implementation works by simply allowing the ToolBox to contain multiple tools with the same ID and orders them by the version specified by the tool author.

To track enable this a second tool lineage has been introduced that just uses tool versions instead of a database (non-toolshed installed tools are not longer placed into the Tool Shed install database). The ToolBox has been updated to allow multiple versions per tool id (defaulting to the 'latest' version for all operations which do not specify a version).

Unit tests working through most of the ToolBox and tool panel have been added, as well as functional tests exercising the Tools API. Manual tests against the new tool form seem to demonstrate the tool switching and tool re-running work with only minor changes to the tools API and the job handler.
Introduce ToolPanel abtraction.

There are some repeated operations on an odict in Toolbox that could be cleaned up (fewer lines of code, more readable) with new abstraction in place. Starting with __add_tool_to_tool_panel but will work its way to other methods in Toolbox eventually.

Abstraction reduces cyclomatic complexity of Toolbox.__add_tool_to_tool_panel from 23 down to 18.
Move more logic into ToolSectionElements, raising level abstraction in Toolbox.
Replace another repeated idiom in Toolbox with higher level method in toolbox.panel.