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.
It was defensive, no tests cause it to happen, and I'm not sure how to cause it to happen, but there's two options:
if `getIndexColumn` return `null` because `idx >= indexOrdering.size()`, then incrementing and running again will still return `null`.
if `getIndexColumn` returns null because `indexColumn.getExpression()` returns `null`, then the next indexColumn could have a non-null expression. I'll look into it a bit more.