semantic: Tag functions as abstract, error if their bodies aren't empty.
semantic: Make sure abstract functions are members.
semantic: Insert nulls in place of abstract functions.
semantic: Ensure abstract methods reside in abstract classes.
test: Add abstract class tests.