Implement Add-Type -AssemblyName

Allows the use of types from assemblies that are not available by
default.

  Add-Type -AssemblyName 'Microsoft.Build, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
  [Microsoft.Build.Evaluation.ProjectCollection]
Implement Add-Type -TypeDefinition

Support generating types in memory from C# code.
Implement Add-Type -MemberDefinition

  $method = 'public string WriteLine() { return "Test"; }'
  Add-Type -MemberDefinition $method -Name "MyType"
Implement Add-Type -ReferencedAssemblies

Support generating types using external assemblies referenced by
their full assembly name or path.
TEST: ReferenceHost stores error objects when exception thrown.

Currently the nested pipelines have the error objects but the main
pipeline does not have access to them. So the pipeline.Error in the
ReferenceHost is always empty with Pash. Windows PowerShell does
populate the pipeline.Error with objects sent to WriteError by a
cmdlet.
Report compilation errors when using Add-Type

All compilation errors are written to error stream and are available
via the $error variable.
The Add-Type cmdlet is terminated if there are compilation errors.

There are some problems here. Pash currently only shows the error in
the console from the exception that terminates the cmdlet.
PowerShell shows the exception error and all the compilation errors.
The error from the exception results in a duplicate error record. If
the cmdlet is changed so it does not terminate with an exception then
the compiler errors are displayed in the console.
Implement Add-Type -Path

Can now use types from an assembly or from a C# source file using
Add-Type -Path
Support -PassThru option in Add-Type cmdlet.

Using -PassThru will return a System.Runtime object or an array of
these for the types that were added using Add-Type.
TEST: Fix Add-Type tests on Mono.

Check for multiple compiler errors instead of an exact number since
Mono's compiler reports different errors.

Do not check for use of System.RuntimeType since this is Microsoft
specific.

Assembly name passed to Assembly.Load must use the correct case as the
actual assembly name on Mono.
TEST: Fix Add-Type tests on Mono 2.10.8.1 Travis CI.

On Travis we get an error running two tests:

Test Error : ReferenceTests.AddTypeCommandTests.AddTypeAddsAssemblyToCurrentAppDomain
Test Error : ReferenceTests.AddTypeCommandTests.TypesFromAddedAssemblyAvailable

System.IO.FileNotFoundException : Could not load file or assembly
'Microsoft.Build, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
or one of its dependencies. The system cannot find the file specified.
at System.AppDomain.Load

Switch to using System.Web instead of Microsoft.Build in the test.
Merge pull request #231 from mrward/add-type-command

Add-Type command
Implementation of New-Item for FileSystemProvider
Basic Out-File
Fixes NPE in some cases
Small fixes to match PS behavior
Merged subexpressions of expression_with_unary_operator in one to speed up grammar parsing
Finished joining most unary operator expressions

With the new implementation Pash starts significantly faster than before
(only ~39% of the time for starting and exiting).

All expressions with unary operators have been joined in one expression to achieve this.
The cast expression, however, had to stay there as a separate rule. Although I thought
that joining it wouldn't make a semantical difference for the grammar, a double-cast
like [int][string] wouldn't be parsed anymore.
Fixed path for the reference tests in Pash.proj.

Building with msbuild or xbuild now works again.
Merge pull request #235 from ygra/ref-tests-project

Fixed path for the reference tests in Pash.proj.
Merge pull request #234 from sburnicki/startuptime

Significantly improved startup time