Merge pull request #247 from scriptcs/dev

Ship v0.4.0
Merge branch 'dev'

* dev: (59 commits)
  Increment version to v0.5.0
  exported IConsole and ILog from Autofac to MEF Extensions
  fix breaking build after latest merge
  added test for #r in GAC, moved ReplTests.cs to ScriptCs.Core.Tests.csproj to reflect proper structure
  Followed XUnit convention
  Revised filesystem test name and refactored into new class
  fixed edge case of null reference
  change fileloadexception to filenotfoundexception
  added tests for verifying that assembly gets removed from REPL reference list if it wasnt found. Also check - if file exists reference by absolute path, otherwise try get it from GAC
  add assembly reference to REPL reference list regardless whether it exists or not. Then catch on exception and remove reference if needed
  pass exception to REPL from the catch block too
  fixes #306 - if there is compile/execution exception it gets shown in the console (script mode) or REPL (repl mode)
  ScriptCs and ScriptCs.Core should reference ServiceStack.Text v3.9.47 instead of v3.9.44
  Update ServiceStack.Text from 3.9.44 to 3.9.47
  Using correct assertion library and returning the correct path if the path is a filename or directory. Would prefer if it was all in memory, but unsure as to how it should be designed.
  Refs #296 - Ensure that the method returns a directory path
  Fixes #296 - Assembly reference missing with ..
  Add logic to grab the delta of binaries if there are changes in the installed packages Fix for https://github.com/scriptcs/scriptcs/issues/2
  Fixed wrong argument passed from CommandFactory to RestoreCommand. Fixes #298
  Added ScriptResult.cs and tests
  ...
Update CONTRIBUTING.md
Update CONTRIBUTING.md
Refs #321 scriptcs -install ScriptCs.AzureMobileServices

* `GetWorkingDirectory` returns the current directory if the path is
null/whitespace.
* Fixed assumption that the directory/path would exist.
* Added additional unit tests.
Refs #321 scriptcs -install ScriptCs.AzureMobileServices

* `GetWorkingDirectory` returns the current directory if the path is
null/whitespace.
* Fixed assumption that the directory/path would exist.
* Added additional unit tests.

Fixes #321.
Increment version to v0.5.1
Merge branch 'master' into dev

* master:
  Increment version to v0.5.1
  Refs #321 scriptcs -install ScriptCs.AzureMobileServices
  Update CONTRIBUTING.md
added missing guard clauses
upgraded to latest version of LiteGuard.Source
Merge pull request #340 from adamralph/guard-clauses

Updated to LiteGuard 0.7.0 and added missing guard clauses