Repl changes to unify with ScriptExecutor

There's currently no issue for that, but we discussed that a while ago already. That's a natural next step following the release of REPL.

 - moved `Repl` (the executor) to Core (so it can be available as service)
 - moved `IConsole` to Contracts (so that Repl can be based on any `IConsole` impl you want i.e XAML console)
 - changed ServiceStack.Text reference from console project to Core
 - split `ScriptExecutor` `Execute` method into Initialize, Execute and Terminate (same way as REPL uses). The API should now be cleaner, since you don't always have to pass references/scriptpacks - if you want to just execute plain script, you execute just that
 - made REPL derive from base `ScriptExecutor` to avoid code duplication (i.e. duplicate initialize, duplicate default references and namespaces)