Parameters with no set specified should belong to all sets

If a CmdLet has parameter sets, and a parameter has
no parameter set specified, then that parameter should
belong to all parameter sets.

This was stopping parameters from being passed correctly to a CmdLet
when it has multiple parameter sets, for parameters that had no set
specified.

More work needs to be done to the parameter logic but should
improve it slightly.

As a result the following should now work:

	Get-ChildItem -Recurse
Allow multiple ParameterAttributes per parameter

Allow multiple ParameterAttributes to be specified
for a CmdLet parameter.  This is mainly used when
needing to add a parameter to multiple parameter sets,
but not to all. This allow you to ensure the parameter
has the correct set membership.
Ensure cmdlet properties have correct accessors

This adds checking on a CmdLet's properties for:

* The property must have a public setter.

* If ValueFromPipeline or ValueFromPipelineByPropertyName is specified the
property must have a public getter.
Consider fields for cmdlet parameters

When reflecting on cmdlet also look over fields
for candidate parameters.

The code previously only considered properties, this
removes a TODO.
TEST: Added tests for CmdLet Parameters
Merge branch 'paramchanges1' of https://github.com/b333z/Pash into b333z-paramchanges1

# By Andrew Barnes
# Via Andrew Barnes
* 'paramchanges1' of https://github.com/b333z/Pash:
  TEST: Added tests for CmdLet Parameters
  Consider fields for cmdlet parameters
  Ensure cmdlet properties have correct accessors
  Allow multiple ParameterAttributes per parameter
  Parameters with no set specified should belong to all sets
FORMATTING: Apply default Visual Studio formatting.
Work around compiler warning.

This triggers warn-as-error on Windows.
Merge pull request #100 from JayBazuzi/b333z-paramchanges1

CmdLetInfo parameter reflection