Update `Marketplace.state` getter to to take `isCancelled` into account. This state can then be used internally and externally.
Add checks to `proofEnd`, `isProofRequired`, `willProofBeRequired`, and `getChallenge` that understands if the request is in a state to accept proofs. If not, return other values.
Add `slotMustAcceptProofs` modifier, originally introduced in a later PR, which requires the request to be in state of the request accepting proofs.
Add tests for all the above.