Allow users to specify execution order of features

This feature adds the --order flag to the CLI to allow the user to select an algorithm that determines what order features are run in (currently only feature-level sorting is supported).

Included are two default prioritisers, 'reverse' and 'random'. Both are useful for detecting dependencies between features.

bin/behat --order=random

This feature also allows future extension by registering new orderers via tagged service definitions. This would enable more sophisticated prioritisation algorithms e.g. history-based, diff-based etc.

(based on #611 with comments addressed + moved to separate Extension, dependencies moved into Testwork and away from Behat\Behat)
I would make these methods private