Refactor shebang

Shebang has been organically growing as we were implementing things in <#>, and it has accumulated some cruft over time. I decided to fully understand what is going on and refactor the shebang, removing all unnecessary things and thoroughly documenting it at the same time. Please read the actual comments in the code, that should be now fully self-describing of what is going on. Please ask me if something is not clear and I will improve the documentation in the code.

One test had to be disabled, since it has been testing a feature that we don't use anymore. Hashstack seems to be working with this.

TODO:

* [ ] Add a test for when the profile is not found and test that the shebang exits with an exit code of 127
* [ ] Add a test for when `artifact.json` is found, but `bin/python` is not there (corrupted profile) and check that the exit code is 126 (let's say)