Add an option to only display symbols explicitly marked as public

The idea is to generate API documentation by only displaying objects explicitly marked as public and nothing else (i.e. unmarked, protected or private objects).

Earlier this was only possible by marking everything explicitly as private, which is easy to miss.

To facilitate this a split between 'access undefined' and 'access public' is being introduced, which allows detection later on in the process. Tests have been expanded to include new test cases.