WL#4380: abi_check rule (using gcc -E) for storage engine API

Affects: Server-5.1   —   Status: Complete

RATIONALE
This is to make pluggable storage engines (like InnoDB)
work between multiple MySQL versions.

SUMMARY
Ensure that storage engine interface is stable between versions 
(or when it is not, we know exactly what part has changed.)

DELIVERABLE:
   Framework to test storage engine API, so that build team (or 
   others) can check compatibility between versions.   

BACKGROUND
Storage Engine API is our external API now, 
Changes to the API needs to be monitored with a strong check
framework. create a abi_check rule that will generate stubs
from the existing API and will compare it against pre-existing
canon files and will notify of changes in the same.

REFERENCES
- WL#4394 Changes in the storage engine API versioning for InnoDB
just like we have include/mysql_h.ic we will have
interface files for all include files that a storage engine plugin needs - in
particular plugin.h and mysql_priv.h

And rules in a makefile to check that the interface hasn't changed.

When this is done and pushbuild started to ensure this, we can decouple storage
engine API version from the server version.
Any change in the canon files(.h.pp) should mark the change uniquely in
pushbuild (currently such changes get marked in yellow) and it should trigger an
email to concerned people.