Remove unused method lib/galaxy/workflow/modules.py.
Eliminate direct in/get checks against toolbox.tools_by_id - use get_tool or has_tool.
Introduce abstraction shielding toolbox.tools_by_id from galaxy.workflow.modules.
That was the last module outside of ToolBox itself that was accessing tools_by_id directly.
Introduce new abstraction of tool lineages.

 - Don't force non-toolshed tools into the tool shed install database.
 - Abstract out dealing with the tool shed install database from toolbox, to potentially allow other tool lineages implementations.
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.
Simplify toolbox.load_tool_tag_set method.

guid is taken as input but is always produced the same way from the same input, so just derive it inside the method instead.
Move more logic into ToolSectionElements, raising level abstraction in Toolbox.
Replace another repeated idiom in Toolbox with higher level method in toolbox.panel.