Clearer error messages where parameter validation fails
Clearer error messages if parameter as no legal values
Client: update libs/underscore.js to 1.7
Merged in peterjc/galaxy-central-2/peterjc/clearer-error-messages-where-parameter-v-1418233351514 (pull request #604)

Clearer error messages where parameter validation fails
PEP-8 fixes for tool related stuff.
Column testing.
More parameter parsing tests.
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.