Smooth a wrinkle in HHVM's safesort impl

Summary: HHVM's safesort algorithm (which is used by a number of sort builtin
functions) was adapted from a C++ sort algorithm that required the C++
comparator implementations to return true if left is less than right,
false otherwise. This didn't jive particularly well with some existing
(admittedly hacky) PHP code that would return boolean true if left was
GREATER than right, false otherwise. As a result, there was a wrinkle in
HHVM's C++ comparator logic to compensate for such cases by invoking the
PHP comparator a second time when the first invocation returned boolean
false.

This diff gets rid of the wrinkle by changing the safesort impl (and
associated logic in HHVM) to expect C++ comparators that return true if
left is GREATER than right, false otherwise (props to@markw65 for
suggesting this a while ago). I also added a bunch of comments to explain
what's going on to avoid confusion going forward.

Reviewed By: @markw65

Differential Revision: D1468458