Support for absolute paths, exit codes and better error messages

The ``ScriptExecutor`` pre-pended current directory to script path even if script path is an absolute path. Now the current directory is only pre-pended to relative paths.

The ``scriptcs.exe`` executor did not have any exception handling, so a compilation error or runtime error would simply crash the process. The output (for an un-handled exception in a console app) is simply a ToString of the Exception.

Example of output before change: 

```
Unhandled Exception: Roslyn.Compilers.CompilationErrorException: (5,1): error CS0103: The name 'Consolee' does not exist in the current context
   at Roslyn.Scripting.CommonScriptEngine.CompilationError(DiagnosticBag localDiagnostics, DiagnosticBag diagnostics)
   at Roslyn.Scripting.CommonScriptEngine.Compile(String code, String path, DiagnosticBag diagnostics, Session session, Type delegateType, Type returnType, CancellationToken cancellationToken, Boolean isInteractive, Boolean isExecute, CommonCompilation& compilation, Delegate& factory)
   at Roslyn.Scripting.CommonScriptEngine.Execute[T](String code, String path, DiagnosticBag diagnostics, Session session, Boolean isInteractive)
   at Roslyn.Scripting.Session.Execute(String code)
   at ScriptCs.ScriptExecutor.Execute(String script, IEnumerable`1 paths, IEnumerable`1 recipes) in c:\source\scriptcs\src\ScriptCs.Core\ScriptExecutor.cs:line 49
   at ScriptCs.Program.Main(String[] args) in c:\source\scriptcs\src\ScriptCs\Program.cs:line 41
```

The change introduced a new compilation exception, that will build a proper error message for compilation errors. Example script and output for compilation error:

```C#
using System;

var a = 10;
var b = 0;
Consolee.WriteLine("{0} + {1} = {2}", 5, 10, 5 + 10);
Console.WriteLine("{0} / {1} = {2}", a, b, a / b);
```

```
math.csx: (5,1): error CS0103: The name 'Consolee' does not exist in the current context
[Finished in 2.6s with exit code 1]
```

If the compilation error is fixed, a run time ``DividedByZero`` exception will occur, which will be reported as following:

```
DivideByZeroException: Attempted to divide by zero.
[Finished in 3.1s with exit code 2]
```

If the run time bug is fixed, the exit code will be 0.

Applying this fix will also make it easier to build a proper build system for Sublime Text (as we can use the regex to get file name, line number, column number and error message).

The implementation is, however, not complete, as the ``FilePreProcessor`` will concatenate multiple script files together if they contain any ``#load`` statements. The current implementation works well for single file scripts, but will potentially report an incorrect line number and file name.

One idea for a more complete implementation would be some kind of line mapping, keeping track of which lines belongs to which file, when the pre-processor is building the final script.