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.
Update ToolBox tool registration to support multiple tool versions per id.
WIP: Tool Lineage Enhancements.
Rework ToolBox to use lineage.get_versions.
Fix lineages.factory for stock lineage.
Fix toollineageversion.
Fix stock tool versions.
Cleaner stock.py.
More fixes and tests for stock lineage and ToolBox handling.
Bugfix versions when loading everything in.
Functional testin for running tools with multiple versions.

(Using stock lineage - not tool shed lineage.)
Fix for somewhere.
Fixes.
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.