Special tags to filter applicable step definition sources.

Purpose
=======

This is designed to make the filesystem layout and arrangement of features
more flexible. Target audience is larger projects with multiple
developers.

Changes:
 - Throws errors if more than one step definition matches a feature step.
 - Small fixes for file path matching in Windows.
 - Special tag format for selecting which files are used for steps.

The special tags are designed to be used where the `-r` tag is specified.
They should work where file name matching is done, but will be less
useful.

Tags
====

If no source tags are set, default behaviour is used: all matching step
definitions will be used to fulfill a step.

If one or more file source tags are set in a file, then only the
specified sources are used. Sources accumulate, so each tag ADDS to the
available pool of definitions.

Tags are inherited, so setting at a feature level sets for all
scenarios.

Specific named file tags don't use path or `.js` ending. Files with the
matching name will be allowed as step definitions:

 @:MySteps

Will match (e.g.)

 ./step_definitions/MySteps.js
 ./step_definitions/specific/path/MySteps.js

Directory path tags match against the end of the step files' path.
This is non-recursive, so child directories will not be used.

 @./Interpretation

Will match

 ./step_definition/Interpretation/x.js
 ./step_definition/Interpretation/y.js
 ./step_definition/deeper/Interpretation/x.js

But not

 ./step_definition/Interpretation/deeper/y.js

Any steps loaded from {step path}/support/ will be included
regardless of tags