ci(release): add semantic-release for automated versioning
Configures semantic-release to run on every push to main, creating
GitHub Releases and version tags from conventional commits. Docker
workflow already triggers on v*.*.* tags so builds follow automatically.