Parameterless custom directive line processors

Fix for #728.

This updates allows for directive line processors that do not require an
argument (#cls for example).
Updated exception string per review of #732
GetDirectiveArgument should trim all whitespace
#629 #630 changed to last in wins for line processors
relaxed type constraints for line processor override
corrected exception when line processor override is of invalid type
reverted ScriptServicesRegistration._overrides to being private
split DirectiveLineProcessor and IDirectiveLineProcessor
removed redundant code
Added IReplCommand and basic commands impl
added infra for Replcommands
added InstallCommand
reorganized files, fixed tests, added tests for CwdCommand and CdCommand
tests for ClearCommand and ResetCommand
tests for InstallCommand
added tests for Repl
Fixed the bug in ScriptEngine state manager. Unfortunately it didn't maintain the references correctly. This not an ideal fix at this moment as it requires copying the list of references over and over, but if we move to refactor the ScriptEngine we will address it anyway - this is out of scope here.
post-rebase fixes
#224 #237 #583
Fixed install command
changed discovery to exporedtypes non-abstract classes
do not scan dynamic assemblies
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