Add missing #include.
Add test for “is a shared library”.

For now, just check that a file exists and is executable. We can refine later.
Add “how do you spell libraries on this OS” logic.
Add shell ‘copy’ command to Fabrique library.
Add more OS preprocessor definitions.
Ensure we’re testing the correct ‘fab’ binary.

Don’t rely on the PATH variable: explicitly test the ‘fab’ binary that we’ve just built.
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).
FIXUP filename
FIUXP Default->get
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.