Major improvements

* Introduce semver version checks
* Use new `download` API
* Get the full path to the binary using the `.path()` method
* Use underscored names for private methods