Bug fixes and improvements for deps handling

Allow deps to specify a force_version option to indicate that
subsequent deps specifications for the same application should be
ignored. This is helpful for a number of situations such as being able
to test the interaction of different versions of a subset of deps
without having to do a lot of work to edit nested rebar.config
files. This change set also resolves a few bugs dealing with vcs
version determination and does some refactoring of enormous functions
to at least be slightly smaller.
Remove function dealing with expanded release version

Conflating vcs versions with Erlang release versions is not a good
idea. This may have gone unnoticed for some time since the vcs version
detection has been broken and only the Erlang release version has been
used. Remove the functions dealing with expanding the release version
and use the version as specified in the reltool configuration.
Differentiate between vcs verson and app version when building releases

Honor the distinction between Erlang application versions and vcs
versions when building a release. Also allow the .app.src file to
specify an atom representing a supported vcs to defer to the vcs
version.
Fix bugs in recent changes to rebar_utils:vcs_vsn/3
Fix rebar_core:process_current_dir/7 type spec
Fix function order
rebar_deps: simplify preprocess/2

Move skip_deps= check into a separate funtion to simplify preprocess/2.
rebar_deps: fix minor issues introduced in a26acb2f

- restore meaningful blank lines
- is_app_avilable/2: use spaces in record syntax to match surrounding
  code
- use simpler is_raw #dep{} record field match
- fix minor typo
rebar_deps: simplify is_app_available/2

Replace deeply nested case of expressions with separate functions.
Fix single overlong line introduced in 0b833391