As we extract subcrates from the `src/` directory, the repository root becomes a bit cluttered. This change moves these subcrates into a `lib` directory.