compiler: fix slice/array evaluation order bug
There was a phase ordering issue in the handling of "keyed" array
literal expressions: the lowering phase was canonicalizing the
indices/vals before the phase that fixed evaluation order, meaning that
the evaluation order was incorrect. The fix is to capture the orginal
ordering and use that ordering when doing traversals (there is already
something similar being done for struct literal expressions).
Fixes golang/go#17640
Reviewed-on: https://go-review.googlesource.com/32296
From-SVN: r241688