More flexible code generation

This change introduces new way merge requests and schema files are generated.

Instead of putting query arrays into member variables, we return those arrays from
functions. That way we don't have to assemble the data inside constructor anymore
and allow dynamic generation of such script (if created or updated manually).

This change is backward compatible - if the migration script is still using member variables,
default implementations of functions will return those variables.

New migration scripts would require new MMP code itself though.