Refactor TACExecutor for better access from tests

Separate the the execution from the LLVM IR code from the rest, so that runIR()
can be cleanly accessed from tests.
Add logging instead of console printing for TACExecutor
Add M1 integration tests

The integeration tests (M1ErrorTest and M1RuntimeTest) test the example
programmes against the hole compiler chain.
The RuntimeTest need a LLVM installation to work, because they execute the
LLVM IR code and check for the exitCode.
In particular the lli tool is needed. The RuntimeTest checks for a working LLVM
installation, if no installation is found the tests are ignored.
Add M2 integration tests

The integeration tests (M2RuntimeTest) test the example programmes against the
hole compiler chain.
The RuntimeTest need a LLVM installation to work, because they execute the
LLVM IR code and check for the exitCode. In particular the lli tool is needed.

The M2RuntimeTest is only executed, if the m2implemented field in the test class
is set to true (because the m2 is not yet implemented).

The M2RuntimeTest also checks for a working LLVM installation, if no
installation is found the tests are ignored.
Merge branch 'experimental_backend' of github.com:swp-uebersetzerbau-ss13/fuc into backend