Query cancellation & timeout

Seems like a scary default serialization, since it permanently changes the state of the object being serialized… I haven't got far enough in the PR to see why it's useful yet, though :)