refactor: avoided ArgumentOutOfRangeException in Repl when taking substring
change Repl.Commands to IEnumerable
relaxed AssemblyReferences.ctor and made fields readonly
add Guards
removed redundant code
tidied up formatting

#224
#237
#583
red: added CwdCommandTests.ExecuteMethod.PreservesConsoleColors

#224
#237
#583
green: implemented CwdCommandTests.ExecuteMethod.PreservesConsoleColors

#224
#237
#583
refactor: *really* avoid ArgumentOutOfRangeException in Repl when taking substring

#224
#237
#583
green: added multiple casing to InstallCommandTests.ExecuteMethod.InstallsPackageUsingArg2AsPreReleaseFlag

#224
#237
#583
refactor: restrict install command pre-release flag to 'pre' only

#224
#237
#583
red: added ReplTests.TheExecuteMethod.ShouldEvaluateArgs, ShouldEvaluateStrings, ShouldSurfaceArgumentCompilationErrors, ShouldSurfaceArgumentExecutionErrors, ShouldSurfaceIncompleteArguments
removed ShouldPassArgsToCommand, ShouldUseObjectIfArgCanBeEvaluatedToValue

#224
#237
#583
red: green implemented ShouldSurfaceArgumentCompilationErrors, ShouldSurfaceArgumentExecutionErrors, ShouldSurfaceIncompleteArguments

#224
#237
#583