Enum.sort_by/3

Enum.sort_by/3 takes a collection, a mapper function, an an optional
sorter function.  The function sorts by the mapped value using the sorter.
The optional sorter default to `<=/2`.
Add @doc for Enum.sort_by/3
Add @spec for Enum.sort_by/3
Fix @spec sort_by

Use format provided by José Valim that uses `when` to eliminate the need
for `@type mapped_element`.
Fix spacing
Pull reused test data into variable
Fix phrasing of Enum.sort_by/3 @doc
Merge pull request #2464 from KronicDeth/feature/2460/enum-sort-by

Enum.sort_by/3