tests: avoid spurious misc/expr failure on AIX 6.1

* tests/misc/expr: Avoid spurious failure on AIX 6.1 due to
differing regexp diagnostic.  Reported by Michael Felt.
doc: identify/refer to source of each fixed bug in log and in NEWS

* HACKING (Commit log requirements): Describe our policy: when you
fix a bug, put the "git describe" string of the bug-introducing commit
in your commit log and put the "fixed-in-release version number"
in the NEWS blurb.
tests: fix quoting bug in misc/nohup

* tests/misc/nohup: Fix invalid quoting.
tests: convert one `...` expression manually

* tests/ls/stat-vs-dirent: Manually convert `(...)` to $(...),
to avoid automatically producing an invalid result.
tests: convert nearly all `...` expressions to $(...)

Exempt init.sh because it runs before we're assured to have a
shell that groks $(...).  Exempt *.mk because "$" would have to
be doubled, and besides, any `...` expression in a .mk file is
almost certainly evaluated before init.sh is run.  Finally, also
exempt the perl-based tests, because perl's `...` cannot be
converted to $(...).  Do that by running this command:

git grep -l '`.*`' tests \
  | grep -Ev 'init\.sh|\.mk$' | xargs grep -Lw perl \
  | xargs perl -pi -e 's/`(.*?)`/\$($1)/g'

One minor fix-up change was required after that, due to how
quoting differs:
diff --git a/tests/chmod/equals b/tests/chmod/equals
-    expected_perms=$(eval 'echo \$expected_'$dest)
+    expected_perms=$(eval 'echo $expected_'$dest)

Another was to make these required quoting adjustments:
diff --git a/tests/misc/stty b/tests/misc/stty
...
-  rev=$(eval echo "\\\$REV_$opt")
+  rev=$(eval echo "\$REV_$opt")
...
-      rev1=$(eval echo "\\\$REV_$opt1")
-      rev2=$(eval echo "\\\$REV_$opt2")
+      rev1=$(eval echo "\$REV_$opt1")
+      rev2=$(eval echo "\$REV_$opt2")

Also, transform two files that were needlessly excluded above:
(both use perl, but are mostly bourne shell)

  perl -pi -e 's/`(.*?)`/\$($1)/g' \
    tests/du/long-from-unreadable tests/init.cfg
tests: use perl's qx!...! rather than `...`

* tests/misc/expr: As above.
* tests/misc/ls-misc: Likewise.
* tests/misc/pwd-long: Likewise.
* tests/misc/uniq: Likewise.
tests: remove nearly all remaining backticks

* tests/rm/isatty: Remove now-unneeded "# `" line.
* tests/misc/ls-time: Likewise.
* tests/misc/date-sec: Remove stray "`" in comment.
* tests/du/long-sloop: Likewise.
* tests/mv/part-symlink: Replace multi-line `...` by $(...).
* tests/mv/sticky-to-xpart: Likewise.
* tests/rm/fail-2eperm: Likewise.
* tests/ls/nameless-uid: Likewise.
* tests/cp/perm: Likewise.
* tests/cp/preserve-gid: Likewise.
* tests/cp/same-file: Likewise.
tests: new syntax-check rule to prohibit use of `...` in tests/

* cfg.mk (sc_prohibit_test_backticks): New rule.  Exempt 3 files.
tests: correct reversed args to "compare"

* tests/misc/sort-discrim: Correct reversed args to "compare".
This nit was masked by a bug in maint.mk that effectively disabled
many of the syntax-check rules.
build: update gnulib submodule to latest
tests: avoid unnecessary subshells in misc/stty

* tests/misc/stty: Don't waste a subshell to perform this:
eval rev=\$REV_$opt.  Fix rev1,rev2 assignments similarly.
cp: change --attributes-only to not truncate existing files

* src/copy.c (copy_reg): Don't truncate an existing file,
to support copying attributes between existing files.
The original use case only considered creating new files,
and it would be a very unusual use case to be relying
on the truncating behavior.
* doc/coreutils.texi (cp invocation): Mention the non
truncating behavior.
* tests/cp/attr-existing: A new test to ensure O_TRUNC skipped.
* tests/Makefile.am: Reference the new test.
* NEWS: Mention the change in behavior.
fmt: accept new --goal=WIDTH (-g) option

Accept -g for BSD/Plan9 compatibility.
* NEWS (New features): Mention it.
* tests/fmt/goal-option: New test.
* tests/fmt/long-line: Rename from tests/fmt-long-line.
* tests/fmt/base: Rename from tests/misc/fmt.
* doc/coreutils.texi: Document it.
* src/fmt.c (main): Accept the new option
(check_for_goals): new function to implement the operands
Based on BSD's and Plan-9's fmt programs.
doc: remove a little direntry redundancy

* doc/coreutils.texi (Basics direntry): Remove 3rd "Common options."
maint: replace a use of strcpy in chmod.c with memcpy

* src/chmod.c (main): Use memcpy rather than strcpy,
since we already have the length handy.
doc: use @xref{... only at start of a sentence

* doc/coreutils.texi: Correct many misuses of @xref.
doc: tweak README-hacking

* README-hacking: Don't say "...on your hard drive".
That is unnecessary, and now, borderline anachronistic.
maint: modernize/clean-up a small function in ls.c

* src/ls.c (make_link_name): Adjust comment style to refer to VARIABLE
names, not 'variable'.
Move each of two declarations "down" to first use.
Compare pointer to NULL, not to 0.
Don't reuse local, "linkbuf" for a different purpose.
maint: ls: use stpncpy/stpcpy, not strncpy/strcpy

* src/ls.c (gobble_file): Move a decl "down".
(make_link_name): Do not hard-code '/'.  Use IS_ABSOLUTE_FILE_NAME
and dir_len instead.
Use stpcpy/stpncpy in place of strncpy/strcpy.
maint: tac: use memcpy, not strcpy

* src/tac.c (main): Use memcpy, not strcpy, since we know the length.