Pure functional qsort, closer to a real quicksort.

- Not using transients or primitive arrays.
- TBD lots of code...
- TBD randomizing the pivot fails sorting, likely condition bug
somewhere... Works fine with picking always lower bound.