add method-level contracts to SemiFuture & Future
add method-level contracts to SemiFuture & Future

Summary:
method-level contracts

(Note: this ignores all push blocking failures!)

Reviewed By: yfeldblum

Differential Revision: D8132350

fbshipit-source-id: d79b1d88a38ea97de8d0e841e822805aff3959ae

facebook/folly,facebook/folly,facebook/folly,facebook/folly,facebook/folly