Adding X() extension method and tests

This PR introduces a new X() extension method, It removes some redundancy and allows tests to be written in the following fashion

```csharp
"Given some state"
  .X(() => ...)
"When something happens"
  .X(() =>...)
"Then this occurs"
  .X(() => ...)
```

The string passed into X is parsed so that the clause is appropriately added a Given, When, Then, And or But.