Python 3 fix from planemo.
Bring in newer experimental components from downstream work on planemo.
This includes some utilities for working with Dockerfiles requested by Kyle Ellrott, a linting framework for Galaxy tools and a bunch of work on brew integration - most specifically a brew dependency resolver. It is obvious why the brew dependnecy resolver needs to be included in galaxy core - but I am also including the linting stuff here in case we want to reuse it in the tool shed or in the tool form. Sam's new tool form, plus the automatic tool form reloading by me and Kyle, and the tool package downloader by Dave B - is an exciting confluence of features that should really speed up tool development - adding in an GUI tool linting report would pair nicely with these features. (GUI + API work not included here - just the outline of the tool linter).

The homebrew work is tracking progress on building isolated, versioned homebrew environments here - https://github.com/jmchilton/brew-tests.

Allows deployers to add homebrew elements to config/tool_dependency_resolvers_conf.xml. Optional attributes include 'cellar' - this should be the absolute path to the homebrew Cellar to target (defaults to $HOME/.linuxbrew/Cellar under linux and to /usr/local/Cellar under that other operating system Galaxy supports).

'versionless' is another attribute supported by this tag - if set to true - it will ignore the specified package version and just resolve the latest installed homebrew version of that recipe. (If used this should always come after a resolver that respects versions.)

This should work in some superficial way for any brew installed recipe - but it is much more robust and useful for packages installed with the `brew vinstall` external command (found in https://github.com/jmchilton/brew-tests). For `install`ed packages - each dependency must be laided out as a requirement in Galaxy - so samtools 1.1 would require to second requirement tag for hstlib for instance. For `vinstall`ed packages the dependencies are recorded at install time and can be reproducibily recovered at runtime without requiring modifying the state of the Cellar or even needing brew installed at runtime on the worker (only the Cellar directory needs to be avaialable).