Add partial support for Erlang/OTP 17

Allow rebar to compile applications using Erlang/OTP 17 and older
versions.  This patch only provides partial support since the rebar
tool itself must be compiled using an Erlang/OTP version that is older
than 17.
Fix 'rebar generate' regression (#253)

If the directory we're about to process contains
reltool.config[.script] and the command to be applied is
'generate', then it's safe to process. We do this to retain the
behavior of specifying {sub_dirs, ["rel"]} and have "rebar generate"
pick up rel/reltool.config[.script]. Without this workaround you'd
have to run "rebar -r generate" (which you don't want to do if you
have deps or other sub_dirs) or "cd rel && rebar generate".
Merge pull request #237 from norton/norton-17

Add partial support for Erlang/OTP 17
file_utils: properly report errors (fix #95)

While at it, improve the error message printed by rebar_utils:sh/2.
Merge pull request #254 from tuncer/fix-generate

Fix 'rebar generate' regression (#253)
Fix 'rebar help clean' function_clause error

Missing info(help, clean) in rebar_qc.erl.
Merge pull request #265 from goofansu/fix-qc-help-clean

Fix 'rebar help clean' function_clause error
Update THANKS

Add my name to THANKS
rebar_core: consistently order args and simplify code

* Fix arg order:
  The order of arguments got inconsistent over time. To fix that, use
  the same consistent order in all functions.

* Avoid one erlang:'++'/2 call in process_dir/6.

* Avoid lists:prefix/2 and atom_to_list/1 calls:
  We can easily avoid 2 lists:prefix/2 calls and one atom_to_list/1 call
  in execute/5 by passing in whether the command is a hook or not. The
  resulting code is simpler and easier to read.
Fix #267 (code path regression)

Since the introduction of -r/--recursive, deps were not properly added
to the code path when running ct, eunit, etc.

To fix that, pass a flag down to process_dir1 and conditionalize
execution of the command. This moves the decision into process_dir1
where we can decide to invoke preprocess/2 and postprocess/2 but not
execute the command.

Without this fix, you'd have to, for example, invoke 'rebar -r ct
skip_deps=true', if you wanted to run base_dir's ct suites with deps on
the code path (while skipping all non-base_dir ct suites).

So, with this patch applied, if you run
$ rebar ct
deps will be on the code path, and only base_dir's ct suites will be
tested.

If you want to test ct suites in base_dir and sub_dirs, you have to run
$ rebar -r ct skip_deps=true

If you want to test ct suites in all dirs, you have to run
$ rebar -r ct

The fix is not specific to ct and applies to all commands.

To be able to add inttest/code_path_no_recurse/deps, I had to fix
.gitignore. While at it, I've updated and fixed all entries.
Merge pull request #268 from tuncer/code-path-regression

Fix #267 (code path regression)
Merge pull request #269 from goofansu/patch-1

Update THANKS
Merge pull request #252 from tuncer/file_utils-errors

file_utils: properly report errors (fix #95)
Add {prefix, atom()} option for abnfc_opts

Specify the atom to use as a prefix for the decoder and generator
functions inside the parser's module.  Default is ''.
Add {parser, module()} option for abnfc_opts

Specify the module to use for parsing the ABNF grammars.  Default is
'abnfc_rfc4234'.
Add {qc, proplist()} option for abnfc_opts

Specify the options to use for the generator functions inside the
parser's module.  Default is [].