Introduced Exit and Return Management

"exit" now allows to have an exit code which is properly handled.
In a script, the script simply exits and $LastExitCode will be set.
Outside a script, the complete process exits and the exit code of the process is set accordingly.

Also return statements now allow a value. However, this is nothing special
as
  return 5;
is the same as
  5;
  return;
in Powershell.
ReferenceTests have been added to make sure this behavior fits PS.
The reference testing framework was adjusted for this and is now more powerfull to test even more things
like the PS/Pash process behavior.
Merge pull request #198 from sburnicki/exit_management

Introduced Exit and Return Management
Allow cmdlet import when default parameter set is AllParameterSets.

Cmdlets that define the DefaultParameterSetName to be
ParameterAttribute.AllParameterSets cannot be imported by Pash.
One example is the Get-Package cmdlet that is included with NuGet.

    [Cmdlet(VerbsCommon.Get, "Package",
        DefaultParameterSetName=ParameterAttribute.AllParameterSets)]
    public class GetPackageCommand : NuGetBaseCommand
    {

Importing such a cmdlet into the session state an 'An item with the
same key has already been added.' error displayed.

    var initialSessionState = InitialSessionState.CreateDefault();
    initialSessionState.ImportPSModule(moduleToImport);

   at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
   at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
   at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)
   at System.Management.Automation.CmdletInfo.GetParameterSetInfo(Type cmdletType) in Pash\Source\System.Management\Automation\CmdletInfo.cs:line 200
   at System.Management.Automation.CmdletInfo..ctor(String name, Type implementingType, String helpFile, PSSnapInInfo PSSnapin, ExecutionContext context) in Pash\Source\System.Management\Automation\CmdletInfo.cs:line 47
   at Pash.Implementation.CommandManager.<>c__DisplayClassb.<LoadCmdletsFromAssembly>b__8(Type type, CmdletAttribute cmdletAttribute) in Pash\Source\System.Management\Pash\Implementation\CommandManager.cs:line 183
   at System.Linq.Enumerable.<SelectManyIterator>d__31`3.MoveNext()
   at Pash.Implementation.CommandManager.LoadCmdletsFromAssembly(Assembly assembly, PSSnapInInfo snapinInfo) in Pash\Source\System.Management\Pash\Implementation\CommandManager.cs:line 184
   at Pash.Implementation.CommandManager.LoadCmdletsFromAssemblies(IEnumerable`1 assemblies) in Pash\Source\System.Management\Pash\Implementation\CommandManager.cs:line 195
   at Pash.Implementation.CommandManager.ImportModules(IEnumerable`1 modules) in Pash\Source\System.Management\Pash\Implementation\CommandManager.cs:line 205
   at Pash.Implementation.LocalRunspace.InitializeSession() in Pash\Source\System.Management\Pash\Implementation\LocalRunspace.cs:line 196
   at Pash.Implementation.LocalRunspace.Open() in Pash\Source\System.Management\Pash\Implementation\LocalRunspace.cs:line 147
Use default parameter set if it is the AllParameters set.

With a cmdlet specifying the default parameter set to be the
AllParameters set, when the parameter binding is ambiguous
, the default parameter set was not used if it is the
AllParameters set.

    [Cmdlet(VerbsDiagnostic.Test, "MyCmdlet",
        DefaultParameterSetName=ParameterAttribute.AllParameterSets)]
Update grammar for real literals.

Allow capital E for the exponent:
    1.2E4

Allow multiple digits for the exponent:
    1.2e45
Implement simple real literals.

The following simple real literals are supported:

    1.2
    .4
    123.456e-2
    123.456e-231
    123.456E-231
    3.45e3
    32.2e+36

The following do not work in Pash, but do work with Microsoft's
PowerShell:

    3.e3
    32.e+12
    1.

It looks like these are missing from the official PowerShell grammar
although there is an example of one of them in the PowerShell spec.
Merge pull request #201 from mrward/cmdlet-default-parameter-set-is-all-parameter-sets

Cmdlet default parameter set is all parameter sets
ReferenceTests for PSObject reflection properties
PSObject member reflection capabilities
Add-Member cmdlets, related tests
Member access and invocation abstraction via PSObject

The new capabilities of PSObject are now used to access properties,
fields and methods of any object by abstracting the access through
PSObject.
The current implementation lacks support for static members and will
be added in the next commit.
This means the new tests are all working, but some old aren't with
this commit.
Support for static members
Abstraction of PSMethodInfo

Implementation is now in PSMethod as intended by the API specification.
Support for overloaded method invocation
Fixed introduced error on assignments with operaors
Fixed and enabled some tests that work now
Added ObjectCommandTests to PowershellReferenceTests project and fixed incompatibilities
Made test explicit again which didn't work correct.
Refactoring: Fixed typo
Internal Array support

Previously arrays were treated as Collections, however, this isn't PS conform.
Now, arrays are real C# object[] arrays, so properties like @(1,2,3).Length are
available.