Cest classes enh

This PR is for this issue https://github.com/Codeception/Codeception/issues/279. As you can see i've introduced new class ```CestCase``` is the parent class for all Cest-classes, in ```_failed``` there is a ```_after``` call, why i did it in that way and not in ```Subscriber\Cest```, so one of the use-cases - user can have in his ```_after()``` some cleanup, and when test fails he want to see data after failed test, he can do it very simple by just overriding parent ```_failed```, but if we hardcode it in ```\Subscriber\Cest``` then user will no have ability to see what data is wrong in DB, or other storage, etc. I've also decided to make small BC - methods now accepts events and not scenario, that was made because events make more sence here than just scenario in every method starting from ```_```. I tested this in compiled phar, works correctly.
P.S. hm, looks like i made new branch on Mink-enh. branch, so i think Mink PR must be merged before this.