Tools: Outline abstractions for ripin tool XML parsing out of galaxy.tools.Tool.

First part of a long process - this handles outlining a couple parsers and setting everything up to pass the parser into Tool.

Long term this should allow us to support (in core - if not the whole ecosystem) - multiple tooling formats (YAML, CWL, etc...). But it is also important from a purely design perspective - this core logic class should not be doing XML parsing.

As part of this I am building a test YAML tool description - but it cannot yet be loaded by Galaxy and should not be considered part of Galaxy's interface - it is there just to test two implementations are possible - obviously a broader design discussion would need to happen before we support a new YAML tool format going forward.
Tools: Parse name, id, and version using tool source abstraction...

instead of XML directly.
Tools: Parse is_multi_byte from tool source instead of from XML directly.
Tools: Parse display_interface from tool source instead of XML directly.
Tools: Parse require_login from tool source instead of from XML directly.
Tools: Refactor request parameter translation for new tool_source abstraction.

Interface itself relies on producing an XML element still - but it is optional - so we don't need to modify the interface until we want to allow data sources to be non-XML (less interesting than tools more generally I suppose).
Tools: Parse command and interpreter from tool_source instead of XML directly.
Tools: Refactor url redirection params parsing to be optional in coming from tool_source.
Tools: Parse descriptions from tool_source instead of using XML directly.
Tools: Parse runtime version command stuff from tool_source instead of XML directly.
Tools: Parse parallelism information from tool_source instead of XML directly.
Tools: Parse 'hidden' from tool_source instead of XML directly.
Tools: Refactor code/hook parsing so only executed by XML tool sources

Not migrating these features to new abstraction or YAML yet - I think they are all deprecated.
Tools: Rework custom options handling to be optional.

Need to figure out if still useful and migrate into ToolSource interface if it is.
Tools: Parse action module using tool source instead of XML directly.
Tools: Move uihints into legacy parsing block - another feature that requires tool XML.
Tools: Refactor test parsing to be optional for non-XML tool sources.
Tools: Refactor configfiles to be optional for non-XML based tool sources.
Tools: Move parsing of requirements and containers into tool_source...

Implement for YAML tool source.
Tools: Refactor trackster configuration parsing to be optional for non-XML tool sources.