update README history about parser
Expand parser to support command parameters.

For example, this works:

    Set-Location C:\Windows

In the process I got rid of `ASTNode.GetValue()` - everything goes through `Execute()`. See below for details.


There are a couple regressions:

- Prompt always gets a blank line. (See below)
- `Set-Location` throws an object to the console ("System.Collections.ObjectModel.Collection`1[System.Management.Automation.PSObject]")


Squashed commit of the following:

commit af96ebb0abf8900c8a4c693eabb3395605333f9e
Author: Jay Bazuzi <jay@bazuzi.com>
Date:   Fri Aug 24 17:28:47 2012 -0700

    FORMATTING

commit d049284e4729152b1946ddb763567299de57a1a5
Author: Jay Bazuzi <jay@bazuzi.com>
Date:   Fri Aug 24 17:28:31 2012 -0700

    Pass parameters to commands.

commit 9f0770520ff72e221cd2fc292cd1d0a944dd32dc
Author: Jay Bazuzi <jay@bazuzi.com>
Date:   Fri Aug 24 14:36:21 2012 -0700

    `command_elements_node` to return `CommandParameter` objects

commit c66357d4366262656baeaa10cbc5d3bdf328e4cb
Author: Jay Bazuzi <jay@bazuzi.com>
Date:   Fri Aug 24 14:34:37 2012 -0700

    Fix bug where we saw the parameters as part of the command name.

commit 5b33214fa12302791df584a74231ca55f032e9c1
Author: Jay Bazuzi <jay@bazuzi.com>
Date:   Fri Aug 24 14:21:03 2012 -0700

    Get rid of `ASTNode.GetValue()`

    I don't think it is a good idea to distinguish between `GetValue()` and
    `Execute()`. Note that many. implementations of `Execute()` just called
    `GetValue()`.

    In PowerShell, you can evaluate any expression and still get side
    effects; you can perform any action and still get a result. Any
    expression can be a command; any command can include expressions. So I
    think that differentiating between them is a false abstraction. For
    example, consider:

    Set-Location (mkdir "x")

    Should we GetValue or Execute the mkdir?

    However, I may just not understand the reason for keeping them
    different. If that's the case, I hope I find out before I get too
    entrenched in this way of doing things. We'll see.

    I did introduce a regression. The prompt no longer prints in color, and
    has an incorrect newline at the end. I believe the correct fix is to run
    "prompt | write-host -nonewline", and to add
    $Host.UI.RawUI.ForegroundColor or write-host -foregroundcolor to the
    prompt implementation. Later.

commit 1ab045f3ac1357ca5bcebb25c5fb3d3e72f7b1f2
Author: Jay Bazuzi <jay@bazuzi.com>
Date:   Thu Aug 23 23:56:58 2012 -0700

    REFACTOR: Use reflection to set `AstConfig` for `NonTerminal`s, too.

    Basically the same thing as Commit: 2329aeb, but that was for `Terminal`s.

commit 1d21977ecdf2b7c76767c53d7013668200d94f4f
Author: Jay Bazuzi <jay@bazuzi.com>
Date:   Thu Aug 23 22:07:07 2012 -0700

    Add `command_elements_node`.

commit 48bd9bccb2a00e1fdfea8fcae121e03147b630f7
Author: Jay Bazuzi <jay@bazuzi.com>
Date:   Thu Aug 23 21:50:13 2012 -0700

    Extend `ParametersTest()` all the way down the parse tree.

commit d174dae15654c2677e837cc661b68563e6d482f3
Author: Jay Bazuzi <jay@bazuzi.com>
Date:   Thu Aug 23 21:31:44 2012 -0700

    Move parameter testing to grammar tests, not AST tests.

commit 06ab782ac711a61320584d4da8c0729a92f2a48a
Author: Jay Bazuzi <jay@bazuzi.com>
Date:   Thu Aug 23 21:20:04 2012 -0700

    Move command logic from `command_name` to `command`.

    No user-visible impact, but not exactly a refactoring, either.

commit 6df2b0dc673d9cd16a60a458aad146b2eb396e74
Author: Jay Bazuzi <jay@bazuzi.com>
Date:   Thu Aug 23 20:44:10 2012 -0700

    Parse command parameters (simple syntax only)

    That is:
        Set-Location C:\Windows

    and not:
        Set-Location -Path C:\Windows

commit 6457bba61dc9ce1af1d1de60449996ad86035dcc
Author: Jay Bazuzi <jay@bazuzi.com>
Date:   Thu Aug 23 20:28:58 2012 -0700

    Remove extra parans from terminal regex patterns.

    These regex patters are composed from one another. I originally took the defensive approach of wrapping things with lots of parens:

        string pattern1 = "abc";
        string pattern2 = pattern1 + "+";             // PROBLEM: would match 'abcccc', but maybe it's supposed to match 'abcabc'
        string pattern2 = "(" + pattern1 + ")+";      // RESOLVED: Always put parens around things.

    A recent change added named groups to every sub-pattern:

        string pattern1 = "(?<pattern1>" + "abc" + ")"; // NEW!

    which means we can always assume a subpattern appears as a single group,
    so it's no longer necessary to wrap things with extra parens.

commit fc4032451f4001a8ee144835e3894d50f32a7241
Author: Jay Bazuzi <jay@bazuzi.com>
Date:   Thu Aug 23 20:12:38 2012 -0700

    Remove old parser nodes that are already implemented in the new parser.

    We no longer need this code as a reference.