Allow user to specify a sort algorithm for feature execution order

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 detecting dependencies between features.

```bash
bin/behat --priority=random
```

This feature also allows future extension by registering new prioritisers via tagged service definitions. This would enable more sophisticated prioritisation algorithms e.g. history-based, diff-based etc.
There is a drawback moving the shuffling to a private method: reference mismatch.
The argument is passed as copy-on-write to the method (not copying but only incrementing the refcount of the zval for now). Then, you pass it to ``shuffle`` which expects a reference. Given that the zval is not a reference and is used several times (twice in this case), it must be duplicated in memory before being referenced for shuffle.

On the other hand, if you keep the shuffling in ``prioritise`` directly, ``$prioritisedFeatures`` will be a zval used only once, and so it can become a reference without being duplicated in memory.

See http://jpauli.github.io/2014/06/27/references-mismatch.html for a complete explanation (my knownledge on this topic comes from this article)