Implement BFTask Cancellation

Cancellation is provided by a token passed into the continuation methods, which check for the cancelled state before executing their blocks and return a cancelled BFTask if necessary, based on discussion from [#18](https://github.com/BoltsFramework/Bolts-iOS/issues/18)

Don't particularly like the multiple `with`s in the method signatures, but it seemed better to go follow the pattern of `continueWithExecutor:withBlock`/etc... really open to suggestions if you have something else you guys would prefer.