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`.
Then the code pattern would be:

    assert Enum.sort_by(collection, &(&1[:sorted_data])) ==
           [[...],
            [...]]