Fix JIRA-983 and support exteranl sort for sortByKey

Change class ExternalAppendOnlyMap and make it support customized comparator function(not only sorted by hashCode).
nit: I would move the whole `if` to the next line:
```
protected val comparator = 
  if (...) ... else ...
```