Cleaned up command line interface
123456789012345678901234567890123456789012345678901234567890123456789012
Switch from hand-cranked code to boost::program_options which has made
things much nicer. While I was at it I also created a few more command
line switches and tried to make problem areas more sane.

* There's now an actual help message. Can you believe it! The future
  has truly arrived.
* Messages is now cleaned up. It only expects to ever have init called
  once, which must happen before anything else occurs in the program.
* The question of whether or not to catch all exceptions was being
  handled by a compile time setting (debug mode would always throw).
  I've hit quite a few situations where getting the program to abort
  is a major hassle so I made this governed by a command line switch
  instead (--debug).
* The times are no longer printed out next to all console output
  unless --printTimes is specified.
* Macaroni used to always print out its paths. Now it does no such
  thing unless "--showPaths" is specified.
* It's possible now to pass a path as the project file to be
  executed.