Order by desc

When we have a Union_Ordered, sometimes we need to compare the different values of the union (e.g. if we're sorting over it). This causes the index to preserve that information.

I'm going to refactor the determineOrderEffectiveness method shortly to have less nested if/for/if stuff going on and open a second PR for that.
That's probably reasonable. The expression will be null when a group index has a column from a table not involved in the query. As things stand, `pickBestIndex` won't let through such an index because it does not distinguish running out of ancestors from encountering one an unreferenced one.