Cached install

resolves #47 

Note: this PR won't add cache list / clear features. Those are being worked on in a separate branch.

@janl