Solc command line arguments

Solc now accepts multiple command line arguments.

- Most of the options concern the output of solc.
- Output to both a file and the standard output is possible.
- Unknown arguments are ignored
- Illegal values to arguments produce a legible error explaining to the user what he did wrong.
you can't add an std::string to a char* but you can the other way around. So would have to force std::string() constructor on all literals to work with std strings.