If the signature is the same as an inherited one then is override or a base.init call is required, just like methods.
init can be overloaded just like a method.
If no init cues are defined in a class then the init cues of the base class are inherited.
At some point def init should give a warning.
At some point the internal hacks around methods called init can be removed.
Done: def init should give a warning.
To do: If a subclass defines no init and there is no parameterless init in the base class, give the user a nice error message with correct line number.