Tool enhancements for Python targets

A bit if a mess to merge, since this version includes stuff pulled from Terence:

support for args as templates, pulled from Terence
support for versioning, pulled from Terence
minor enhancements to various Tool classes to support Python limitations (no interface, no overloading)
Python 2 target and template
Python 3 target and template
Tests cases for Python 2
Tests cases for Python 3