Improve HAF upgrade procedure
Current upgrade can fail when some type defined at HAF level will be used at user table column. Dropping this type can easily lead to data loss (column will be dropped too). We should try to iterate over all type references and abort upgrade when column references will be found.
Another aspect is improving a regression tests to cover all defined functions and types which should be upgraded, and verify if their definitions have been updated. This is especially important for functions referencing libhfm.so to detect dangling reference to non existing shared library.