Get-Member fix; Introduction of Select-Object cmdlet; Refactoring

The major intention of these commits are the fixing of the (currently broken) Get-Member cmdlet and the introduction of the Select-Object cmldet with proper tests.

I introduced some PSObject extensions as evaluate properties, as this functionality is needed often when a Cmdlet takes a -Property parameter. This parameter can include a hashtable with expression, or only an expression which is evaluated (Format-* and Select-Object cmdlets support this, for example).

I fixed Hashtables, s.t. the values aren't always PSObjects but the objects itself (this is verified with a ReferenceTest).

The enumeration stuff was refactored: Support for GetEnumerator is now uniquely in LanguagePrimitives, all the duplicate code was removed. Strings and IDictionaries are not seen as enumerable any more, which seems to fit PS behavior.
Future: Let's think about ways to avoid having to remember case insensitivity, or we'll end up with a bug where I forget it.