Fix JIRA-983 and support exteranl sort for sortByKey

Change class ExternalAppendOnlyMap and make it support customized comparator function(not only sorted by hashCode).
You could save yourself a class if you just add a boolean field to ExternalAppendOnlyMap (e.g. `sortOutput`)