cp: passing arguments when interpolating strings

This adds support for \*[xyz arg1 arg2 ...].
cp: support conditional interpolation with \?'cond@expr1@expr2@'

This adds a new escape sequence for conditional interpolation: the
escape sequence \?'cond@expr1@expr2@', evaluates cond (exactly as if
it is a .if condition) and interpolates expr1, if the condition is
true, and expr2, otherwise.  The delimiter (@ in this example) can be
any character that cannot be part of the condition; for numerical
expressions, for instance, it cannot be a digit, an operator sign, or
a scale indicator, unless separated from the condition with \&.  The
final delimiter may be omitted.  Note that this escape sequence is not
interpolated in copy-mode.
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 justification

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