Fix update-deps with certain forms of the {tag, ...} type

Sometimes tags like 1.1-3-g3af5478 or d20b53f0 are encountered. The
first is the output of 'git describe', and the second is just a regular
git SHA. git fetch --tags will not pull these down, so do a full git
fetch instead.
Don't over-aggressively clean the code path in the presence of lib_dir directives

Rebar, when it encounters a lib_dir directive, caches the current code
path, adds the libdir(s) and returns the cached copy of the path. When
rebar has finished processing that directory, it restores the cached
path. This is problematic in the below scenario:

        /(lib_dir)->G
  A -> B -> C -> D -> E
   \-> F -> D -> E

When rebar is finished processing B, it restores the code path to what
it was before it processed B, removing C, D, E and G from the code path.
This means when it comes to process F, neither D or E are in the code
path, so any header includes, rebar plugins or parse transforms will not
be in the code path. Without the lib_dir directive, rebar does no code
path cleanups, so everything works fine.

This change makes rebar only remove the explicit lib_dir code paths it
added and adds an inttest that replicates the above scenario.
Don't badmatch if a path we think we added isn't in the code path
Roll rebar version 2.1.0
Merge pull request #154 from Vagabond/adt-update-tags

Fix update-deps with certain forms of the {tag, ...} type
Merge pull request #157 from Vagabond/adt-lib-dir

Don't over-aggressively clean the code path in the presence of lib_dir directives