Expose more of the `pip install` options

+ Adds proper upgrading of packages
+ Makes `force=True` actually force installation
+ Adds the ability to use pip's package caching functionality

Introduces a minor change in the default behaviour of `upgrade()`. `upgrade()` now runs `pip install [package] --upgrade` instead of `pip install [package]`. Changes the expected behaviour of `upgrade()`, in that `upgrade("package")` will not force re-installation. `upgrade("package", force=True)` will now force re-installation. Changes the behaviour of `install("package", force=True)` in that previously force removed the check to see if the package was installed, `force=True` now actually passes either `--ignore-installed` or `--force-reinstall` to pip if `upgrade=True` to pip to ensure that a forced install is actually forced.