Added comments to file parsing loop

Mostly just explaining the regex
Worked out a kink in the multithreading system

Oddly enough, threads should be joined before you kill them.
File parser enqueues \include'd files
Second exception argument is no longer optional

At some point I stopped using C-strings for exceptions and switched
to std::string, but forgot to make the second argument mandatory.
References to nullptr are bad news.
Removed some FileParser debug prints
Fixed hanging issue when an error occurs

The loop in the main thread that waits for the others to finish
didn't account for possible errors and would hang forever because
the queue wasn't empty.
Stopped mixing verbose prints with errors

When an error occurs, verbose prints stop so that the user can
focus on the errors.
Errors on duplicate named arguments.