Documentation for pub functions is now mandatory

Now that everything is documented we flip the switch by making the `documentation` function a pure virtual function....