The AbstractControl javadoc says: "Subclasses are expected to at least override getTag() to differentiate the control.". What it also should mention, is that it needs a default constructor if you have created a custom constructor.
At deploy time, all the controls listed in click.xml will have their onDeploy() method called. But the reflection part will fail if the default cstor does not exist.
Class deployClass = ClickUtils.classForName(classname);
Control control = (Control) deployClass.newInstance(); //<--- fails at deploy time