Cleaning up main.cpp

Using boost program_options library. Would be nice to check if all is
fine. Unfortunately, process_argument() from ASTmisc.cpp cannot be
removed, because legacy applications apparently use it (according to
comments in code by Vijay/Trevor). It's a really weird way of passing
options in C, though, and we may consider removing it.

Also, main.cpp uses some static variables for cleaner code, less
argument passing between functions. I think this makes the code easier
to read, and main.cpp will only be called 1x, so no threading issues
with using static variables.
We were catching input problems with assert()-s. This is wrong

assert() must only be used for internal sanity checks. Not for catching
wrong input from users. In case Release mode is built, the input will
not be sanitized, which is very bad. Use FatalError() in this case, and
maybe an assert() at the end just to make sure that everything is OK

Fixes #40
Cleaning up indentation and markup in the LICENSE_COMPONENTS file
Adding msc99hdr license to the license_components

Gathered the authors and copied their license text into the file

Fixes #7
Set RUNTIME_OUTPUT_DIRECTORY on correct CMake target.