Add documentation to Operator interface
Add default implementation of Operator.isBlocked
Make Operator implement AutoCloseable
Do not call finish on operators during driver destruction

Finish during driver destruction is unnecessary and complex
Only call finish on operators in main driver loop
Replace QueryExecution.cancel with fail(USER_CANCELED)
Split stage cancel and abort

Fail query if output stage is ABORTED or FAILED
Abort sub-stages when stage is ABORTED or FAILED
Abort stage if sub-stage is ABORTED or FAILED
Split task cancel and abort

Abort tasks when stage is FAILED
Fail stage if task is ABORTED directly (before stage is complete)