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

Fixes #435.

This PR includes the following changes:
**Renaming:**
 - `IScriptExecutor.Execute` -> `ExecuteFile`
 - `IScriptExecutor.ExecuteScript` -> `ExecuteCode`
 - `IFilePreProcessor.ProcessScript` -> `ProcessCode`
 - `IFileParser.ParseScript` -> `ParseCode`

**Structural:**
 - Changed `IFileParser.ParseCode` 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: