Tool enhancements for Python support

This version includes:
 - 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