cucumber/cucumber — pull request #559 by ipwnstuff (2013-10-04 17:10:44+00:00)
Title: Add allowed failures/postponed status and tag

### Feature:
This pull request adds a new `:postponed` status and a special`@postponed` tag. The feature can be compared to some stretched uses of the `@wip` tag and the `World#pending` method in unison. These changes are something I've implemented in a project at work and was asked to share across teams. I figured it be better to just contribute them upstream, so my monkey patches don't become out of date.

### Scenario 1:
> A product manager should be able to add a postponed tag to a feature file if there is a feature that isn't going to be implemented in the immediate future.

### Scenario 2:
> A development manager knows that a low priority defect is failing the test run and would like to temporarily disable the test to improve the quality of results reported by cucumber.

**NOTE**: Scenario 2 is different from using the `@wip` tag in that the test/feature was previously passing or implemented. Using the `World#pending` with a block would be closest to the desired functionality, which is why I've enabled users to use `Word#pending` instead of `World#postponed` for tests that fit.

### Workflow
I've implemented a `World#postponed` method to conform with the pending status in most cases. I then updated the `rescue Exception` section in `lib/cucumber/ast/step_invocation.rb` to set the status to `:postponed` if the current scenario's configuration included the tag in the `postponed_tags` array. This could also be thought of as an allowed failures mechanism.

### Conditions of Satisfaction
- [x] Move my monkey patches to a fork of cucumber to create a pull request
- [x] Thoroughly test my additions
- [ ] Install cucumber from source to test the additions when added directly vs. through monkey patches
- [ ] Add tests for the different use cases