Visibility fixer

Entirely rewrite fixer to use tokens instead of regexp, what fixes several problems in generated fixed code, eg functions _after_ class definition (mentioned in #332). Extends utests as well.
once it is protected, it means it is an extension point for people extending the class, and you have to be careful with BC breaks on it. If you keep it private, you can do what you want with the maintenance.