Ensure every Z3Encoder::encode() returns Z3 Boolean sort

* Return false for Z3Encoder::encode(const ReadEvent<T>&, Z3&)
* Add Z3::constant(const IndirectWriteEvent<T, U, N>&) to allow equating
  an updated array value with the new constant generated from an indirect
  write event