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 terser 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.