Introduce suites

Suite is a set of features and configuration parameters.
Suites are pillar of Behat v3. Each profile in v3 could have
one or more suites. Each one of those suite could have
one or more unique contexts and features.
Introduce context pools

Each suite in v3 could have zero or more context instances
associated with it. In order to support this, context pools were
introduced. Context pools are containers of context classes
and represent automation part of any exercise.
Refactor annotaions into more abstract callees

Callee is an instance of executable with additional meta
associated with it. Hooks, definitions and transformations
in v3 are all callees.
Refactor and split definitions into 3 entities

Definitions, transformations and snippets now all have
their own homes and services associated with them living
in appropriate namespaces.
Refactor hooks
Refactor lifecycle event subsystem
Refactor features loader
Cleanup formatters
Refactor testers into event-driven architecture
Refactor console & processors subsystem

Now processors are more powerful and independent from
the command itself.
Refactor service container configuration
Introduce run controls

Run controls are event subscribers that control how
the exercise going on.
Update feature suite and clean refactoring leftovers
Update composer.json
Update .travis.yml
Fix init processor and cache configuration processing
Update dependencies
Fix JUnitFormatter class name

Thank you Travis-CI & ext2, you, case-sensitive monsters!
Clean StepTester a bit more
Remove unneeded spacing

[ci skip]