Simplify command line argument usages

Strangely, command line arguments were being parsed in two places:

1. The console runner, which makes sense.
2. On the far side of the AppDomain boundary, in ExecutionProxy, which is silly at best.

Command line argument parsing is only applicable when there are command line arguments to parse.  This was being done strangely because the parser was producing an ILookup&lt;string, string&gt; from the incoming string[] of raw arguments, and ILookup&lt;string, string&gt; cannot successfully cross the AppDomain boundary while string[] could.

To simplify and improve the handling of custom options, ILookup&lt;string, string&gt; usages are replaced with an equivalent but serializable alternative, Lookup.  All command line parsing code moves to the one place that actually has command line arguments to parse (Fixie.Console.exe), while the rest of the system can work with the more general purpose Lookup object.