ENH add an introsort implementation

This is an implementation from the pseudo-code in Musser's paper.

I haven't done any performance testing, no doubt there is optimization to do here e.g. `@inbounds` and something better for `index_of_median_of_three` (which atm is terrible)...
this guard should rather be on `hi - lo` > 1 (which can cause an exception due to log2(...) == -Inf).