Add reverse application operator Data.Function.(&)

Add `&` as the reverse application operator with `infixl 1`, which allows
it to be nested in `$` (re #9008).

Approved by the core libraries committee on 2013-10-14.

This also bumps the `base` version number to 4.7.1.0
Add Data.List.sortOn function (re #9004 and #2659)

`sortOn` sorts a list by comparing the results of a key function applied to each
element.  `sortOn f` is equivalent to `sortBy . comparing f`, but has the
performance advantage of only evaluating `f` once for each element in the
input list.

Historical note: This was already proposed in 2008 as part of

  http://www.haskell.org/pipermail/libraries/2008-October/010797.html

It was, however, the recent re-attempt

  http://www.haskell.org/pipermail/libraries/2014-April/022489.html

that let `sortOn` make it into base at last. Maybe the other functions
mentioned in #2659 might be worth reconsidering as well.