Improved exceptions and reporting exceptions for command-line compiler.

Can Location be converted into a string with to_string(...) or s << x, where s is a std::ostringstream? If not, it can not be displayed using boost::diagnostic information.