Make BaseSchema abstract and add abstract methods to it.

This PR focus on making easier to implement other driver schemas by making BaseSchema abstract and adding abstract methods to it.

`_convertColumn` is now protected, all schema implementations now only exposes public methods as defined in the BaseSchema.

The last point can be a bit opinionated and I don't remember having a discussion about it.
I introduced `{@inheritdoc}` into our codebase. When looking at the docblocks of the schema implementations all of them were pretty much alike. I thought it was just way too much repetition and decided to give it a try.

Some pros and cons I can think are:
- Pros:
   - They are all equal and extra descriptions can be 'appended'.
   - Focus on documenting one and documenting it well.
   - Typo? Better wording? Just update one place.
   - ApiGen (used for generating our api.cakephp.org) supports it
- Cons:
   - Since they are pretty much all equals if there is any typo or better wording we will have to go through four files.
   - Understanding what the code does may become more difficult, althught some editors make it easy to see the inherited documentation.

Thoughts?