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()` will not force re-installation. `upgrade(force=True)` will now force re-installation.