`uv` is now used as the main project management tool. `hatchling` is
currently kept as the build system due to the use of its dynamic
versioning feature and to make the transition easier.
Most fields used are standardised and should work with all modern
packaging tools.
Add `uv.lock` to the repository, as versioning this file is recommended.