numfmt: implement support for field ranges

* src/numfmt.c: Replace field handling code with logic that understands
field range specifiers. Instead of processing a single field and
printing line prefix/suffix around it, process each field in the line
checking whether it has been included for conversion. If so convert and
print, otherwise just print the unaltered field.
(extract_fields): Removed.
(skip_fields): Removed.
(process_line): Gutted and heavily reworked.
(process_suffixed_number): FIELD is now passed as an arg instead of
using a global.
(parse_field_arg): New function that parses field range specifiers.
(next_field): New function that returns pointers to the next field in
a line.
(process_field): New function that wraps the field conversion logic
(include_field): New function that checks whether a field should be
converted
(compare_field): New function used for field value comparisons in a
gl_list.
(free_field): New function used for freeing field values in a gl_list.
Global variable FIELD removed.
New global variable all_fields indicates whether all fields should be
processed.
New global variable all_fields_after stores the first field of a N-
style range.
New global variable all_fields_before stores the last field of a -M
style range.
New global variable field_list stores explicitly specified fields to
process (N N,M or N-M style specifiers).
New option --all-fields

* bootstrap.conf: Include xlist and avltree-list modules. numfmt now
uses the gl_avltree_list implementation to store the field list.
tests: partial output can occur before an error

* tests/misc/numfmt.pl: Each field is now processed and printed
in turn, so there may be some output by the time a field is reached that
causes an error.  Update the tests to reflect this.  Also remove test
for the 'invalid' field -5.. this is now a valid range specifier.
doc: add usage for field range specifiers

* src/numfmt.c (usage): Document newly supported field range specifiers
  and --all-fields option