Automate Release Process
#335 proves ( again ) that humane error is inevitable. We need to automate our release process. There are [many systems](https://github.com/topics/release) that assist in releasing software on GitHub. The most popular is [@semantic-release](https://github.com/semantic-release), [@conventional-changelog](https://github.com/conventional-changelog) and [@release-it](https://github.com/release-it).

Brief introductions : 
- [@semantic-release](https://github.com/semantic-release) automates the whole package release workflow including: determining the next version number, generating the release notes and publishing the package.
This removes the immediate connection between human emotions and version numbers, strictly following the [Semantic Versioning](https://semver.org) specification.
- [@conventional-changelog](https://github.com/conventional-changelog) generates a **CHANGELOG** from `git` metadata
- [@release-it](https://github.com/release-it) is a generic CLI tool to automate versioning and package publishing related tasks

We need to figure out how to automate our release process for future releases.