Allow named parameters to be specified by alias and prefix

Adds support for specifying parameters using part of the parameter name ( prefix ).
    
Adds support for specifying parameters by their alias and also allows specifying them by prefix as above.

Adds some addition parameter checking, specifying a parameter that a cmdlet does not support will now throw an exception.

As a result these styles of parameter passing will now work ( ProcessName is an alias ):

        PASH /> Get-Variable -Nam a
        PASH /> Get-Process -ProcessName mono
        PASH /> Get-Process -ProcessN mono

This also adds some tests and enables some that are now passing and adds some todo's that document future logic that needs to be added in regards to parameters to be feature complete.