Test spec steps have a string representation.

Lucid can get a representation of a test step that includes the keyword
and the name of the step. This will make certain reporting or diagnostic
information easier to generate since a full step signature can be
determined.
Lucid is able to parse Background elements.

This commit recognizes background elements within a test spec. Backgrounds
are basically just another scenario from a parsing perspective. They have
an identifier, an optional name, as well as a set of steps. As with the
scenario element, all steps for a background are stored in a context.
Backgrounds are added to the feature currently being processed just as
scenarios are.
Lucid is able to parse Scenario Outline elements.

This commit adds support for scenario outlines (also known as scenario
templates). A scenario outline is a parameterized scenario that utilizes
a data table for its conditions. This means a scenario outline has to be
parsed as a specific element that can hold a collection of steps. These
steps will have placeholders. An outline will also have a collection of
examples, which are essentially scenarios. These scenarios provide specific
data that will replace the placeholders. This means each example row must
be turned into a scenario element.

Supporting this change required adding support for steps in non-outline
scenarios that hold data tables. Lucid provides a specific Table class
to make operations with and on tables easier.