This lets us catch problems with abstract base class inheritance using 'make check' instead of at runtime. This also pulls in a wider concept for "abstract", so, uh, look out.