Handle empty array in the subscript operator

Addresses #2133 
Actually, you can have a non-empty `array<unknown>`. For example, that would be the type of `ARRAY[NULL, NULL]` which would have cardinality 2, and be of type `array<unknown>`. So lets make this work correctly for the `unknown` type. I think you just need to check if index is within the array (and throw the exception if not), and then make this function return `void`