Support switch template instructions
A switch variable can have multiple values
Add 'p4' (Perforce) as a dependency type

This calls the 'p4' command-line tool to checkout and sync Perforce
trees. It involves significantly more special code in Rebar than
using 'git p4', but it eliminates the indirection of
Rebar->Git->Python->Perforce
Quote include/lib paths

In OTP-17.0 paths on windows are not shortpaths anymore
so they may contain spaces and parenthesis
Move include/rebar.hrl to src/rebar.hrl

rebar.hrl is only meant to be used by src/*.
Add qualified name tests specification (see #118)

Augment 'tests' option of 'rebar eunit' command with ability to specify
tests to run using module-qualified names. This change also forced me
to change the way modules for coverage and for testing itself are
selected - module-qualified tests specifications are now taken into
consideration. Extend tests to cover new functionality. Update
dialyzer_reference accordingly.
Fix #176

Extend CONTRIBUTING.md with regards to tests and credit.
Fix a format of a debug output
Fix spec file look up

When trying to skip spec files under deps/ directory,
ignore "deps" component which is also included in Cwd.
For example, "/home/deps/src/myapp/test/cover.spec"
contains "deps" component but should not be skipped if
Cwd is "/home/deps/src/myapp/".
fix double "the" in a comment

noted by @tuncer
use the effective deps dir instead of hardcoding "deps"

suggested by @tuncer
Regression test for #249
Fix #249 (erlc regression)

The combination of changes to rebar_erlc_compiler, and the fact
that erl_first_files is inherited, caused a regression. To fix
that, ensure every project uses its own .rebar/erlcinfo. While at
it, fix the issue that erl_first_files entries were not included
when initializing the dep digraph.

Reported-by: Louis-Philippe Gauthier
Reported-by: Roland Karlsson

Thanks: Tuncer Ayaz
Add REBAR to environment before executing hooks

REBAR will be set to the rebar binary which was executed and runs the
builds. Enables the use of the same binary for rebar invocations as
part of a pre or post hook like so:

    ${REBAR} escriptize
Local corrections on string processing:

* Corrected regexp: `[x|y]` -> `[xy]`.
* Used an re:replace/4 option instead of multiple IOlist functions.
Rebasing. Fix differences with c26b0c7 c996e98 b690842.
Merge pull request #136 from waisbrot/add-p4-support

Add support for the Perforce VCS client via the "p4" tool
Merge pull request #288 from tuncer/fix-176

Fix #176
Merge pull request #119 from deadok22/qualified-test-spec

Add qualified name tests specification (see #118)
Merge pull request #171 from fenollp/using-stdlib

Some optimisation/refactoring using stdlib's functions