Fix regressions in rebar_file_utils
Fix missing plugin warnings

This patch fixes the warning logging when the number of missing plugins
is greater than one. The current code only works by accident, when a
single plugin is all that is missing.
Add console command to windows runner script
Get rid of app.config

app.config has been a long standing erroneous file in rebar. Erlang/OTP
documentation suggests a sys.config file instead. This file is stored in
the releases/VSN directory. This does a few things but most importantly
it ensures your config (contained in the application environment)
survives a hot upgrade. It also has the advantage of allowing the
configuration of the application to be versioned along side the
application code. This patch flips rebar to use sys.config rather than
app.config.

Additionally it makes this flip to vm.args as well, making them
versioned just like sys.config.

This patch also includes runner script changes to support the old
etc/app.config config file location and support for Windows.

Thanks to mokele for the initial work and kick in the pants to make this
finially happen.
Merge pull request #133 from joewilliams/sysconfig1

Get rid of app.config
Update Windows runner script usage blurb
fix vm.args checks by always using $VMARGS_PATH
Merge pull request #135 from mokele/runner-vm-args-fix

fix vm.args checks by always using $VMARGS_PATH
@ characters before elses were causing the script to not run
Merge pull request #139 from Mistagrooves/syntax_errors_start_erl_batch

@ characters causes windows start_erl error
Fix config handling in root_dir

Avoid overwriting custom config (passed with -C) when we are processing
the base_dir in rebar_core.
Handle vm.args properly while building upgrades

This patch corrects the vm.args behavior while building upgrade tarballs
by copying the file from the release into the upgrade. Additionally it
patches the dummy runner script in the upgrade test project to work
properly.
Cleanup deprecations now that R14B04 is released
Support for custom version commands

This patch adds support for customising the way in which rebar generates
version numbers for app.src files using the `{vsn,Spec}` approach.
Whilst the existing `{vsn,ScmName::atom()}` syntax will continue to
work, users can also pass `{vsn,{cmd,Cmd::string()}}` in which
case the provided *command* will be used. For example:

```erlang
{application, doodah,
 [
  {vsn, {cmd, "git rev-parse --short HEAD"}}]}.
```
Remove modules that fail coverage from the list
More descriptive logging for upgrade systools cmds

In debugging upgrade issues it is sometimes difficult to know which
systools step a error ocurred at, a little extra logging to fix that.
Copy sys.config into upgrade tarball

While building an upgrade the sys.config file should be copied into the
upgrade tarball so release_handler:install_releases/1 does not clobber
the existing configuration from the application environment.
Better code path handling during upgrades

While building a upgrade package rebar will add new paths to the
internal erlang path, these paths and their order have effects on how
the package is built. This patch should fix some corner cases where a
user can receive a "undefined application" error.
Don't run erl_args through set_trim

Args provided by erlsrv.exe were being mostly
discarded due to being processed through set_trim
rebar_utils:sh/2: remove bash invocation on Windows

Currently rebar_utils:sh/2 will invoke all commands through bash.exe if
found. Otherwise the command will be executed directly. Despite the fact
that the caller cannot know if the command is executed with Unix or
Windows semantics it leads to problems with MSYS's automatic path name
translation.

Therefore remove bash usage on Windows to get a consistent behavior and
to avoid the peculiarities of MSYS's automatic path conversion. Instead
use cmd.exe as its typically needed by most commands.