Adding first and last

Added overloads for .First()<T> and .Last()<T> to support object
reference equality via object.GetHashCode(). Useful for .ForEach()'ing
and avoiding one-off cases for the first or last item.