Remove unnecessary using directives.
Select parameterized generic method declared on base class(#64).
Select parameterized generic method declared on base class(#64)

The selected method in this case has return value, which corresponds to
`Select<TResult>(Expression<Func<T, TResult>>)`, while
`Select<TResult>(Expression<Action<T>>)` corresponds to a method having
no return value.
Extract the SelectImpl method

This removed the duplicated codes.
Extract some private methods

This is to reveal intention of those codes.
Use default literal keyword

This is to reveal which types are used in a method call.
Fix a typo

SelectGeneircMethod -> SelectGenericMethod