this is a big rewrite of the functional tests.
major fixes are:
- using 'arguments' in compilation database to avoid shell escaping bugs as were in 'command' field
- using relative file path in compilation database
- using JSON to pass parameters between compiler wrappers and build wrappers
- using JSON to encode values for interception
- unify process execution to make the code portable across different python versions
- add support for compiler wrappers and compilers
- add support to recognize user provided compilers
- fix 'exclude' flag to work across all tools
- tested on travis-ci (linux and osx) and appveyor (windows)
in this commit i deleted the windows batch files, because this will not work as it was. needs to generate those.