- We can't simply define `pip3.6`,... because the aliases support both
cpython and pypy version, which means these needs to differ. For that
reason, I decided to use `ppip3` for pypy and `pip3` for cpython.
However there's also an option to use the full version like this:
`pypy3pip` or `py3.7pip`.
- py alias should always preferably use ipython, however if it isn't
available, it does fall back to the pure python interpreter.
- This is useful for running scripts since we would prefer ipython error
output, but also for debugging, etc.
- However since py will use ipython, we didn't have any good way to get
back to pure python unless it's typed in it's full form, which is too
long. Because of this, this adds `ppy` alias, which always points to
the pure python interpreter, no matter if ipython is available or not.
- This also adds a more explicit `ipy` alias, to clearly mark that we
want ipython.