Reformatting: Lay out _list() file numbering in multi-line.

...like the following complex formatting and filtering steps.
ENH: listall doesn't simply use concatenated task lists.

The simplistic "listall" action implementation just uses _list() on the concatenation of active and done task lists. This has the following shortcomings:

- Task numbers shown for archived tasks from done.txt are invalid.
- As the number of done tasks likely greatly outnumbers the number of active tasks, the task number padding is often larger than expected (e.g. 0005 instead of 05).
- Verbose output lists all tasks as originating from TODO, whereas it should differentiate between TODO: and DONE: sources.

The main challenge is to keep processing all tasks through a single pass of _list(), so that there is a single, unified sorting applied to all tasks. A custom AWK script sets all (originally invalid) task numbers from done.txt to "0", meaning "archived task".
The verbose message from _list() is replaced with a custom message that shows the tasks from todo.txt, done.txt, and totals.

Oh, and added tests for the previously untested "listall" action.
Cosmetics: Consistently use "TERM(s)" in help text.

Two places only used "TERM" although multiple are supported. This can be misleading: do one or all have to match?
Cosmetics: Correct double-spacing in help text.
Add hint for OR'ing TERMs to help text for ls/list.

The regexp syntax and quoting rules aren't known to many who are not well versed in the Bash shell, and difficult to get right even for people in the know. This question came up just recently on the mailing list, too.
BUG: SED error when HIDE_..._SUBSTITUTION contains whitespace.

This error only occurs when add-ons override either HIDE_PROJECTS_SUBSTITUTION or HIDE_CONTEXTS_SUBSTITUTION with a pattern that contains whitespace, not with the values used within todo.sh. But correcting the sloppy quoting doesn't hurt, neither.
Add HIDE_CUSTOM_SUBSTITUTION for customization and add-ons.

Add-ons or users may want to hide parts of the task text from the output.
Though this can already be solved through TODOTXT_FINAL_FILTER, augmenting the configured value is not trivial, and it introduces another SED command into the already long _list() pipeline. Putting an additional HIDE_CUSTOM_SUBSTITUTION into the existing pipeline has hardly any performance implications, and makes the realization of this use case trivial.
Avoid external TR when replacing , with space.

No need for an external tool, Bash can do a global literal substitution itself.
Remove task date(s) when completing prioritized and done tasks.

Replace the primitive substitutions inside the completion function with a call to sed (instead of calling head), and supply more powerful substitutions there.
Strip trailing whitespace when completing tasks.
Various helptext fixes
* 'Quotes optional.' doesn't make sense for 'addm', because without quotes, 'addm' is 'add'.
* There are no projects that don't start with a +.
* Don't tell people to type uppercase when the software takes care of it.
* Mention actions, mention filtering *out* terms.
* Fix link to wiki in the README
Closes #60
Fix typo in duplicate removal on archive, per discussion at http://tech.groups.yahoo.com/group/todotxt/message/3775
explained the sed duplicate-removal pattern
Rework fixed archive deduplication into new deduplicate action.

As per discussion on the mailing list (http://tech.groups.yahoo.com/group/todotxt/message/3775), the automatic deduplication during archiving is unexpected and difficult to enforce in other implementations. Rather, make this a separate (optional) action.
Fix deduplicate for non-printable (and non-ASCII) characters.
Support "preserve line numbers" in deduplicate.
Pull archive() in-line and delegate via recursive call, also for report.

The report action should delegate to archive; it previously (half) did this via duplicated code (and forgot to defragment empty lines, so the tally could be off, and kept silent about the archiving).

The do action directly invoked archive(); if the user had extended / modified the archive action via an eponymous custom action, it would not run. Therefore, always invoke archive through another call of todo.sh, so that a possible custom action is considered.
Remove inactive broken report header.

This was meant to write a report header on the initial report run, but as it mistakenly used TODO_FILE instead of REPORT_FILE, it was inactive, and also missing in the tests. Let's just remove it; the format is simple, anyway.
Only print the added report line, not entire report.

I think this makes much more sense, especially once the report gets very long. (One can always use "cat" to view the entire report.)
Simplify writing of report line.