Refactoring of Gherkin entity attributes.

This commit focuses on modularizing the common attributes that most
Gherkin elements will have.
Coherence platform established.

The goal of the platform is to allow Coherence to check on specific
aspects of configuration that may determine how parsing occurs. In
this case, the goal is to make sure that there is a commonaliaty by
how specs are passed in by allowing automatic handling of forward
slashes or backward slashses when referring to a spec's path.
Backgrounds can be parsed into the AST.

Able to take a spec that has a background and parse that background as
part of a scenario within the feature. Since backgrounds will always be
passed to a scenario and since it cannot be known which specs will utilize
a background, it's necessary to have an "empty background" object that
indicates no backgrounds were found.
Tags can be parsed into the AST.

Able to take tags that are specified as part of a test specification and
associate them with their relevant spec element. Tags can be specified on
the feature or on a scenario. In the case where both exist, the tags on
the feature are also available to the scenario.
Descriptions can be parsed into the AST.

Able to handle non-executable descriptions. Descriptions can be provided
for features, backgrounds, and scenarios.