move compiler records to header file.
renamed recover function to be more generic.

It is now called call_extension, and is used to extend the
compiler functionlity at interesting points.

In this commit, the options_match_ast function got
such an extension point.
Update .gitignore