generate-upgrade can now take target_dir argument

Previous generate-upgrade required renames in rel/ directory:

    rebar generate
    ...changing code...
    mv rel/<release> rel/<release_prev>
    rebar generate
    rebar generate-upgrade previous_release=<release_prev>

With the proposed changes you can now do the same without moving things:

    rebar generate # default target dir: rel/<release>
    ...changing code...
    rebar generate target_dir=<release_new>
    rebar generate-upgrade target_dir=<release_new> previous_release=<release>
Print a more appropriate message on 'rebar info'

To avoid treating plugins' info/2 functions as commands, we catch calls
to 'rebar info'. Previously (4b8c81fb) we simply printed the help
string, but it's much more informative to print the following:
Command 'info' not understood or not applicable
Fix #187 (rename getopt to rebar_getopt)

While at it, update getopt.erl to git rev 78eda3b.
Fix #187 (rename mustache to rebar_mustache)
Fix #205 (erlydtl:compile/3 returns warnings)

Adapt rebar_erlydtl_compiler to handle warnings emitted by
erlydtl:compile/3.
erlydtl: add missing clause (Reported-by: goofansu)

erlydtl implemented 'binary' option. Add new clause for {binary, false}.
Document compile_only=true
Remove experimental flags

Remove experimental flag from:
* qc compile_only=true
* eunit compile_only=true
* src/foo.app.src.script
* eunit tests=
Fix basho/rebar#388

If the syntax error is in a .hrl file, then the reported error message
is not as useful because it's not clear which .erl file was being
compiled. We can fix that easily by first printing what source file was
being processed. We don't change the actual error message, so this will
still work with your editor of choice for jumping to the right line.

Before
------

Success:
Compiled src/foo.erl

Failure:
include/foo.hrl:10: syntax error [...]

After
-----

Success:
Compiled src/foo.erl

Failure:
Compiling src/foo.erl failed:
include/foo.hrl:10: syntax error [...]
rebar_base_compiler: replace fixed size list with a tuple
Bump rebar to 2.2.0 and add proper release notes
Added R16B01 and R16B02 to travis config.
introduce xref_extra_paths
allow suite[s] or test[s] as options for eunit and ct
Add random_suite_order option to eunit command

Option takes either 'true' or a numeric seed value. If true is passed, a
random seed is generated and used. The numeric seed value is for
repeatability.

The idea here is to root out test suites that are order dependant, or
that fail in the presence of certain orderings.
Add documentation
Adapt erlydtl compiler plugin to latest version of erlydtl
Use proplists:unfold to make sure we feed a proplist to keymerge.
{ok, Module} is an acceptable return value from do_compile.
Document support for abbreviated commands