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`.
Ok, I wasn't sure if the metaprogramming in assert would work correctly if I used a variable.  I was assuming to get good error messages I couldn't use a variable since the value wouldn't be in the AST then.