Add a User Local Cache

**WIP**

This adds a local cache onto rebar, which is a directory (`~/.rebar/cache`) where dependencies are housed. When a project builds 

### TODO:

* After N timeouts, set a remote source (ie. github) as "unreachable", and give up on updates, and rely entirely on cache. This allows continued development when github goes down. Which it will. Again.
* Separate the steps between pulling repo information and copying deps into a local project. This allows an analyze step, to build a dependency graph for analysis, namely: dependency cycles, version collisions, and pruning. With a graph, adding a dependency override option also become easier.
* Currently, a dep's source is updated on every build. This will continue without a version freeze. Sadface. Fix that.
* There's a danger of name collision, since rebar has no concept of groups or namespaces. Either add groups to rebar, or extract an optional group name from the repo (eg. `basho`).