Behavior adjustments for reference tests

If a parameter set of a cmdlet is invalid, an exception
will only be thrown if it's intended to be used, not when it's loaded.
Otherwise Pash won't work correctly just because of one malformed
cmdlet.

Also, the Pipeline itself now stops working when there is a terminating error,
e.g. if a cmdlet uses ThrowTerminatingError or there is an parse error.
Catching and printing a broken pipeline is not part of the framework, but
just of the console. That's why this behavior is now in FullHost.

The ReferenceHost is now a separate class and should be used by both the
PS and Pash project.

To use the ReferenceTests with Pash, more projects/assemblies had to be added
to the project. This is an issue that should be resolved.
Better test, parameter lookup fixes, ErrorRecords

One of the reference tests actually tests if a parameter set is created
if it's only set as the default one but does not include any parameters.
The test was enhanced to test this behavior better.

The parameter lookup is now better as it checks for ambiguous parameters
in all parameter sets (as PS does) and tries real names and aliases first,
which is quicker.

Last but not least, RuntimeExceptions now always create an ErrorRecord if
requested for better error handling.

All existing reference tests work now also with Pash.
Small changes for modified pipeline error reaction

As terminating errors break the pipeline now, the TestHost has to handle
the errors. Another test was made explicit as it doesn't work now without
on-demand pipeline processing.
Refactoring: Splitting reference tests

Extracted the reference pipeline execution tests from the parameter tests,
added common base class with utility functionality.
Cmdlets are used in the tests by their type, not by using their name as a string.
This ensures typo-safety and makes debugging easier (navigating to the used cmdlet class).