Spelling out what is public in each module helps to futureproof the
project, and allows the main script to import the relevant names without
contravening best practices.
Buyer was missing from the main script's interface, despite being used
to call Solve. This has been fixed.