ren: do not use adj struct to implement .tl

This is the first of a series of simplifying patches to adj.c.
adj: access n_ll and n_i directly
adj: store the words as strings
reg: \n[.neat] is always one!
fmt: collect words in fmt buffer for whole paragraphs

This patch prepares neatroff for filling whole paragraphs
at once.
fmt: filling whole paragraphs without hyphenating
fmt: new hyphenation support with penalties

The .hyp request can specify the hyphenation penalty.  An argument of
1000 assigns the cost of formatting an empty line to each hyphenation;
a value between 0 and 100 seems feasible for common line lengths.
fmt: not hyphenating last lines if requested
ren: allow right-adjusted un-filled text

It seems an inconsistency in the original troff that the
combination of ".nf" and ".ad r" or "ad c" does not right-adjust
or centre the unfilled input lines.

This is effective only when compatibility mode is off.
fmt: preserve current font and size when hyphenating
dir: support text direction with .>>, .<<, \> and \<

The following troff commands and requests specify text direction:

* .<< and .>> commands change the direction of text (.<< for r2l and .>>
  to l2r); the default direction is l2r.
* \< and \> change text direction temporarily

So for instance one can write:

  .<<
  This is a paragraph in a right-to-left language
  with some embedded \>left-to-right words\< in it.
  .>>

Normal and temporary indentation indent the right side of the lines
after ".<<"; to adjust the left side, this patch introduces base
indentation \n(.I, which can be specified as the second argument of
".in" command.  Base indentation always indents the left side of the
lines, regardless of the current text direction and ".ti" requests.
Note that the sum of \n(.i (or the temporary indent, if specified),
\n(.I, and the length of adjusted lines equals \n(.l.
fmt: keshideh (tatweel) adjustment

With ".ad k" keshideh characters are inserted in output words,
before adjusting with spaces.