Currently, evaluation of a subscript expression x[y] requires that x be a column_value, but that's completely artificial. Generalize it to allow any expression. This is needed after we transform a LWT IF condition from "a[x] = y" to "func(a)[x] = y", where func casts a from a map represention of a list back to a list; but it's also generally useful.