Make tool filters properties optional attributes of config.
This way the tool shed doesn't need to pointlessly add them to its config object.
Make use_tool_dependencies an optional attribute of config.
This way the tool shed doesn't need to pointlessly configure this property to create a toolbox.
Update XML library use during tool parsing to elimiante FutureWarnings.
Start work on unit tests for galaxy.tools.ToolBox.
PEP-8 fixes to tool_shed.galaxy_install.tools.tool_panel_manager.
Introduce abstraction for reindexing tool search.
Fixes re-indexing after tool shed modifications for 5c44ac1 and reduces duplication.
Introduce abstraction for updating ToolBox's shed configs.
Hides some details of writing out integrated tool panel, reindexing, etc... from tool shed install code and reduces duplicatation in tool shed's tool_panel_manager.

Add unit tests.
Move ToolPanelManager operation to create or get section into ToolBox.
Now with unit test. Part of broader effort to make ToolBox interface more explicit, tested, and hide implementation details from other parts of code (such as ToolPanelManager).

Also reworked the code to now build up and re-parse XML structures - just use a dictionary - thanks to 34b3e1c.
Add missing file.
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.
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.
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.
Hide details of toolbox.tools_by_id from lib/tool_shed/util/tool_util.py.
Centralize abstraction for removing tools from toolbox.

Shield's toolbox.tools_by_id from lib/tool_shed/galaxy_install/tools/tool_panel_manager.py.
Abstractions for registering tools from outside toolbox.

Part of effort to further limit exposing tools_by_id directly outside Toolbox.
Introduce abstraction to prevent lib/galaxy/workflow/modules.py from needing tools_by_id.
Eliminate direct in/get checks against toolbox.tools_by_id - use get_tool or has_tool.
Eliminate walking over tools_by_id externally from toolbox.
Move more logic into ToolSectionElements, raising level abstraction in Toolbox.
Replace another repeated idiom in Toolbox with higher level method in toolbox.panel.