Compiler: Improved handling of variant functions.

The idea here is that a non-variant function restarts the function
definition for the symbol (ie overrides all earlier variants), and
a variant function adds another case to the existing definition for
the symbol (if any).

Also added detection of variant getters and setters.