1. Use the official Rust nightly docker image as base
2. Remove hardcoded user
3. Use named volumes to cache .rustup and .cargo toolchain folders
- Changing file permissions to user (chown) only needed on first launch
4. Cleanup apt folders after installing
5. Make bash the default fallback command
6. README.md: Unify workflows for Linux and MacOS
Prepare user environment at build time and update user and group id at runtime if necessary.
Update submodule sync step to avoid a dependency on cargo
Run `make update all` instead of just `make all`. The target `update` didn't update the container environment since it was executed on the host.