Refactored ScriptExecutor into a common, abstract base class for Repl and ScriptFileExecutor

Fixes #435  

This PR includes the following changes:
 - Renamed `IScriptExecutor.Execute` -> `ExecuteFile` to match `FilePreProcessor`
 - Changed `IFileParser.ParseScript` signature to take `string` instead of `List<string>`
 - `ScriptExecutor` was made abstract with _one_ method to implement, `Execute(PreProcessorResult, string[])`
 - Both `Repl` and the new `ScriptFileExecutor` inherits from `ScriptExecutor`
 - Moved line processor marker interfaces to ScriptCs.Contracts to be able to override them in ScriptCs.Hosting

The base class handles default references and namespaces, importing/adding references and namespaces, pre-processing code and loading scripts.

Appreciate feedback :smile: