Clean up the Behat suite

The Behat suite has grown a bit unwieldy after multiple layers of new features. This change:

* Splits Application and Filesystem contexts
* Converts most steps to Turnip
* Combines redundant steps
* Replaces stream magic with stubs
* Uses Symfony\ApplicationTester instead of our own object
Application must be re-initialised for each Scenario so it won't work in the Contructor. Behat does execute them in order, but I agree that isn't guaranteed.

I guess I need to combine them into one beforeScenario?