Project-aware selection of executable for emacs

Fixes #248

Note that this introduces a backwards-incompatible change to the
fsautocomplete protocol. The project response message is no longer just
a list of files, but now contains two fields:

    Files: List<String>
    Output: String

The latter is the output of the currently loaded project as determined
by the MSBuild API. This is usually a .dll or .exe file. The value is
stored when received in `fsharp-ac--output-file`.

The `fsharp-run-executable-file` function (default keybinding `C-c x`)
has been rewritten to suggest this value if it contains a .exe file. It
is also possible to specify arguments.
Merge pull request #739 from rneatherway/issue248

Project-aware selection of executable for emacs
Ensured FSharpSyntaxMode uses tryCast properly
Merge pull request #741 from 7sharp9/ImproveSyntaxModeTryCast

Ensured FSharpSyntaxMode uses tryCast to avoid NRE