Created new branch arff_datatype
Add Arff datatype class with sniffer and metadata.
Add Arff datatype and sniffer to datatypes_conf.xml.
Activate arff datatype by default
Add tool lineage test for tools outside of sections.
Breakup big remove method in tool_panel_manager.py to ease testing.
Separate out logic for dealing with toolbox from logic for dealing repository metadata in the database.
Unit test coverage for removing stuff from the toolbox.
Covers cases for tools inside and outside of sections and both deactivation versus uninstallation.
Bugfix: Allow passing key to GET /api/datatypes/mapping.
All anonymous API endpoints should also allow authenticated access and just ignore the key.
Suite of API tests for exist datatypes endpoint.
Update datatypes API to newer API decoarator/exception handling.
Reduce repeated nested object access in galaxy.api.datatypes.
Expose datatype converter information via datatype API.
With test case.
More ToolPanelManager unit testing.
Eliminate repeated nested object access in ToolPanelManager.remove_guids.
Reduce duplication/complexity in tool_panel_manager.py.
Big conditional in remove_guids switched on sectioned versus un-sectioned with very little difference in what was actually being done. This reduces the cyclomatic complexity of that method from 35 down to 26 (though it is still the most 'complex' method in that file by a wide margin).
Abstract out ToolBox internals from tool_shed.util.tool_util.
Instead of reloading upload actions at this level and exposing tools_by_id - move this logic into the ToolBox in a new method called handle_datatypes_changed().
Centralize abstraction for removing tools from toolbox.
Shield's toolbox.tools_by_id from lib/tool_shed/galaxy_install/tools/tool_panel_manager.py.
Eliminate walking over tools_by_id externally from toolbox.
Abstractions for registering tools from outside toolbox.
Part of effort to further limit exposing tools_by_id directly outside Toolbox.
Remove unused method lib/galaxy/workflow/modules.py.