Add realistic branches to step matching regular expression.

I encountered the issue in #1 as well, and wrote a fix. This regular expression was painful incomplete.

In order to get it to work in my ruby project, I needed to:
* Match steps that don't use parens, which are optional in ruby: `Given /^I am a user$?`
* Match steps that use exact matches rather than regular expressions: `Given 'I am a user'` `Given "I am a user"`
* Match steps that use case-insensitive regex matching: `When /We aren't wearing pants/i` (useful when nesting steps, such as in: `When It as after midnight and we aren't wearing pants`