Super call enforcement

It shouldn't be a problem, because the implementation is purely syntactic i.e. this is okay to do:

override func foo() {
  func callSuper() {
    super.foo()
  }
  callSuper()
}

If you have any more examples, let me know. It would be good to add them to the test suite as well!