implement local package cache

This adds some big performance improvements to the workflow.

Endpoints now report dependencies early, so that lookups happen as soon as possible to resolve the tree and trigger downloads upfront.

On top of this, a full package cache is maintained at `~/.jspm/packages`, hashed by both the override and the package hash - this way a change of either the override or package will automatically clear the cache to avoid stale issues.

Added to the full cache of the registry (already on master), the only network operations are now lookup and download.

The Endpoint API has been adapted for a lot more flexibility as well. It will soon be possible to construct custom npm or GitHub endpoints based on special registries etc. This way one could create a `mycompany` endpoint which is just a specific GitHub repo or npm local server.

The local cache will work nicely with local linking as well.

I'm going to be providing these new features which are just simple interfaces on top of this structure over the next few days.