rebar_app_utils: fix git hook for Windows
Fix the 'ct' target to work on Windows with MSYS
rebar_file_utils: simplify commands on Windows
Allow plugins to participate in pre and post processing

This patch modifies rebar_core to allow plugins to participate in the
pre and post processing steps, giving plugin authors more flexibility
and control.
Setup code path prior to calling edoc

Setup code path prior to calling edoc so that edown, asciiedoc,
and the like can work properly when generating their own
documentation.
Add overlay command to run overlays only

required for building on a different machine to what your live
config is kept on. This way you can build on one machine,
distribute to new machine, then run overlays against a live
config to prevent accidently running code against a live
config in a development or ci environment.
Work around functions not found in source

For parameterized modules, the beam code will have a compiler
generated new/1 and instance/1 function.

If while checking the beam, xref detects one of those is unused, the
rebars xref wrapper will try to find the location of the definition of
that function in the source code for the module (to give a more
specific warning to the user). Since the function was generated by the
compiler it does not actually exist in the source, and rebar crashes
at that stage. This patch works around that issue.
Add possibility to make symbolic links

Simple feature, useful to make link to something without copying it.
Update THANKS file
Add overlay command to shell completion
Use same variable names as file:make_link/2
Add -D option
Cleanup and fix -D for erl_opts
Add -D support to rebar_port_compiler
Add support for -p flag to profile rebar run
When profiling, save analysis results to disk
Fix deps_dir sample config
Overhaul environment expansion for better performance

The introduction of setup_env as a global concept caused the rebar_port_compiler
implementation to start getting called a LOT. The expansion of environment variables
that happens in the port compiler was O(n^n), which means you could see upwards of
80k invocations of lists:foldl on a single app "./rebar clean". This commit reworks
the expansion to be O(n^2), and reduces the running time for the same operation by
60%+. On a large project like Riak, the end result is that a build went from 200
seconds to 73.
Fix comments and formatting
Fix formatting