Contracts implementation

Through this changes and the [phpci-contracts package](https://github.com/guiwoda/phpci-contracts) the required contracts are clearly exposed to plugin developers, without them needing to depend on the whole PHPCI project.

I haven't registered `phpci-contracts` on packagist, so that when the official repository gets there, the main composer.json can point to it.