New (backwards compat) CLI for FAKE that includes FSI cmd args passing

While working on #438, I realised that the feature would make the existing FAKE command line brittle.  The existing code looks for argument strings regardless of their position or relation to switches.  Adding support for passing *arbitrary* string args to FSI, could easily break this.  Therefore, I have added the support I needed for #438 and created a new CLI for FAKE that I think will be much easier to understand and extend in the future.  I hope you agree.  If not, I would be happy to discuss and fix an concerns.

This PR makes FAKE.exe dependant on the [UnionArgParser library](https://github.com/nessos/UnionArgParser).  If figured this would be ok as FAKE includes other assemblies and this one is fairly small and focused.  Using it to [specify the FAKE CLI args](https://github.com/bentayloruk/FAKE/blob/6f287a2a38ae6bac79641f776a4784b71f757c4b/src/app/FAKE/Cli.fs) is really clean.

```fsharp
type FakeArg = 
    | [<AltCommandLine("-ev")>] EnvVar of string * string
    | [<AltCommandLine("-ef")>] EnvFlag of string
    | [<AltCommandLine("-lf")>] LogFile of string
    | [<AltCommandLine("-pd")>] PrintDetails
    | [<AltCommandLine("-v")>] Version
    | [<Rest>] FsiArgs of string
    | [<Rest>] Boot of string
    interface IArgParserTemplate with
        member x.Usage = 
            match x with
            | EnvVar _ -> "Set environment variable <name> <value>. Supports multiple."
            | EnvFlag _ -> "Set environment variable flag <name> 'true'. Supports multiple."
            | LogFile _ -> "Build output log file path."
            | PrintDetails _ -> "Print details of FAKE's activity."
            | FsiArgs _ -> "Pass args after this switch to FSI when running the build script."
            | Version _ -> "Print FAKE version information."
            | Boot _ -> "TBC"
```

An example usage now looks like this:

`fake.exe  build.fsx clean --envvar key1 val1 --envar key2 val2`

We also support the short switches:

`fake.exe build.fsx -ev key1 val1 -ev key2 val2 -ef blah`

`fake --help` now looks like this:
![cli](https://cloud.githubusercontent.com/assets/189409/3180403/ac6afbe0-ec30-11e3-8f70-5c3103c4c9c0.png)

I don't think too much is outstanding, although I appreciate it is important that this is tested well, do we don't break old scripts.  If the new CLI args don't parse, we fall back to exactly the same code as before the new CLI, so I hope this provides the safest experience.

TODO:
* Improve the switch documentation strings (I don't know much about Boot for example).
* There is some FSI arg crossover with Vasily's work on #453.  I have merged this, but I think it could be cleaned up/generalised a little more.
* The --help arg defaults to a UnionArgParser parse error and we fall through to the old command line passing.  This works for now.
* *Done*.  ~~I appreciate that previously the build script arg was first and did not require a switch.  I could add support for this, but thought I would find out how important this is first.~~

Look forward to feedback!