Minor code cleanup.

No functionality change intended.
Factored out tool invocation code into separate file.
Removed useless -quiet switch.
MinGW support in Port.
Also force -fno-rtti on MinGW.
Remove unused variable.
MinGW compilation fixes.
Minor cleanup (avoid forward decl).
Use the system assembler on MinGW.

MC does not support writing out the exception handling tables
to COFF files yet.
Fix MinGW names for naked functions.
DW2 EH for MinGW.
MinGW LLVM compiler flag fixes.

Our CMake code should be rewritten to not expect things as strings
that really aren't, but this would entail a whole lot of cross-
platform testing, so I'm postponing it for now.
Revert "Use CMake-detected make program."

CMAKE_MAKE_PROGRAM isn't always (GNU) make, but refers to the
"make" equivalent of the target generator, for example the
"ninja" executable if the Ninja generator is used.

Using find_program or something similar would probably still
be a good idea.

This reverts commit 5a6176316a5531077b6402970250998a366c0bb6.