Split of StepArgumentTypeConverter logic

Converted StepArgumentTypeConverter into a chain of responsibility
delegating the conversion logic to:
- IdentityConverter which returns the untouched value if it can be
assigned to a variable of the target type (logic comes from
StepDefinitionMatchService and TestExecutionEngine)
- StepArgumentTransformationConverter which tries to perform the
conversion using user defined step argument transformations
- SimpleConverter which handle the simple conversions: enums, GUID and
whatever is supported by System.Convert.ChangeType
Improved StepArgumentTransformation validation

Fixed bug causing StepArgumentTransformation regex to be bypassed when
argument is not a string.
Added check for StepArgumentTransformation to have one and only one
parameter when no regex is defined.
StepArgumentTypeConverter support spaces in enums

Sames behaviour as in SpecFlow Assist namespace
StepArgumentTypeConverter support for tables

Added support for table conversion directly in
StepArgumentTypeConverter.
Added test for single header horizontal tables

If HorizontalTableConvert can't find a conversion from a vertical table
to the target item type, and the vertical table only has one property,
it will try to find a converter for the string value of this property.
Changed constructor selection in Table conversion

VerticalTableConverter will use the constructor that includes the
maximum number of columns with no matching writable property. Columns
with no matching constructor parameter or writer property are ignored.
Merge remote-tracking branch 'upstream/master'
Merge pull request #227 from yazide/master

Table conversion in StepArgumentTypeConverter