Improved cmdlet parameter binding

These commits basically introduced more tests and a more robust parameter set selection when binding cmdlet parameters.
Especially parameter set selection based on pipeline values is better now.