CommandInterpreter

Added command interpreter class. Takes a command string (which can be
multiple console commands or variables concatenated together with pipes
and/or semicolons), parses it and processes the commands.

If commands or variables are piped together, the output from the
previous command is given to the next command as an argument list.
Specifying a single argument of "$" (unescaped dollar sign) will specify
where the output will be inserted into the next argument list. If more
than one dollar is specified, only the first will be used. If no dollar
is specified, the arguments are placed at the end of the existing list.

A semicolon functions the same as a pipe except that the output is not
provided to the next command - the commands are simply executed one
after another.