Allow user to specify a sort algorithm for feature execution

This feature adds the --priority flag to the CLI to allow the user to select a prioritisation algorithm that determines what order features are run in (currently only feature-level sorting is supported because of the way features are lazy-parsed to find scenarios).

Included are two default prioritisers, 'reverse' and 'random'. Both are useful for isolating dependencies between features.

This feature also allows future extension by registering new prioritisers via service container tags. This would enable more sophisticated prioritisation algorithms e.g. history-based, diff-based etc.