Initial attempt at ProjectRun and ProjectRunList
Refactoring and initial async execution work

If async execution is not possible, it tries to fallback on
synchronous execution. However, it will now terminate the launch
and return an error if that execution spawned long-lived processes.
For example, running an Android project does not leave any processes
behind, so it can be run synchronously even if the vim used doesn't
have remote-send support.

Still TODO: tracking the launches, opening the output buffer, handling
process death (IE: it dies on its own) and terminating processes.
Perhaps I'm missing something, but I can't seem to find a way to hook
into the IProcess's life cycle....
Initial async output for vim; no process control, yet
Handle termination of running launch

Now just need to be able to terminate it manually
WIP: use python to update buffer if backgrounded
Fix python buffer append!
Use vim's executable for remote-send stuff; minor cleanup
Add :Terminate command to output buffer, and auto-kill by default
Add simple syntax highlighting so stderr shows as Error
Terminate existing launch by default; force dup with !
Fix handling of missing --servername
Make error handling more flexible; let the exception do the talking
Better handling of timeout from remoteFunctionExpr

Also, increases the timeout to be more lenient; we assume such
a thing would not need to be used interactively....
Add VimLeavePre to terminate all launches on :qa
Only scroll output window if already at bottom
Merge remote-tracking branch 'dhleong/dhleong/ProjectRun' into project-run
update :ProjectRun messaging

update the project run messaging to be more clear that vim needs to be
run in server mode.

refs #354
reduce redraw artifacts when updating :ProjectRun output buffer

refs #354
log :ProjectRun exceptions

refs #354
update :ProjectRun to handle old versions of vim and Windows

refs #354