Enum.sort_by/3

Fixes #2460

Implement the `Enum.sort_by` I requested in #2460 using the signature Enum.sort_by(collection, mapper, sorter).  sorter is optional and default to `<=/2`.
Does that mean the @spec for `at/3` should be updated?  It uses two `@spec` to handle the default value: https://github.com/elixir-lang/elixir/blob/master/lib/elixir/lib/enum.ex#L290-L292