Improved TopPipe performance by 600x

* made Expression.isDeterministic a val
* use a tuple with extracted context values for sorting, remove the need to re-lookup each expression value
* implement proper top-n select using a "runtime" approach with Arrays and binarySearch
Merge pull request #2230 from jexp/top-pipe-performance

Improved TopPipe performance by 600x