Attempt to introduce deps resolving strategy's

Want to discuss idea of introducing deps resolving strategy's.

From top idea is to have such behaviors:
1. fail on error (current behaviour)
-2. ability to lock some deps and prevent double update with different versions (current commit)
3. root `rebar.config` resolve conflicts (if we have conflict - use definition from top level `rebar.config` file)
-4. first occurrence (skip deps if updated with previous level)
-5. highest version (keep highest dep version)

This commit add second option:
```erlang:
% this will fail if locked=false
{deps, [
        {'lager', "2.0.3", {git, "https://github.com/basho/lager.git", "2.0.3"},
         [{locked, true}]},
        {'corman', ".*", {git, "https://github.com/EchoTeam/corman.git",
                          "e3c4c9f602441b4d9b8f9f8ea2813b3d791ec9e1"}}
]}.
```

Next step is add an option (ex. `resolve_strategy`) with following values: `root`, `first`, `highest`

*Update1:*
Skip 2nd. If you need this, you can achieve via plugin (ex. https://github.com/seth/rebar_lock_deps_plugin)
4 and 5 - not in priority now