Defer raising error on out-of-bound array access

Out-of-bound array accesses in short-circuit operators should be
allowed, e.g. 0 < j && array[j-1] when j is zero. The underlying
issue is that the short-circuiting behaviour of overloaded binary
operators such as && is lost. As a workaround, we construct an
internal representation of loads (e.g. array[j-1]) that returns
a nondeterministic when the index is a literal and out-of-bounds,
in which case writes are disallowed.