Add a ‘filename’ field to file objects.

In addition to the ‘basename’ (filename without extension) and ‘name’ (filename including subdirectory), we sometimes need just the filename.
Change plugin::Registry::Default() to get().

We should only have one instance of the plugin registry within a process, as plugins will need to register themselves when they load (at least, they will once start building them as shared libraries).
Use platform description of library filenames.
Add code for loading shared libraries.

This currently only works on POSIX, but it’s clear where we would implement the equivalent functionality on non-POSIX OSes.
Add support for loading plugin shared libraries.
Build plugins as shared libraries.
Add some missing documentation.
Exclude more paths from Doxygen.

We don’t need to generate documentation for generated code (in bootstrap or build), Pygments or vendor code like Pegmatite’s calculator example.
Update Doxygen config file.

Drop no-longer-supported XML options.
Add/extend anonymous namespaces.

This keeps the documentation (and symbol tables!) clean.