Improve 'UnixTree' output when body and footer are empty.
Improve 'UnixTree' output when body and footer are empty.

Now, when the body and footer are empty, the last line of the header
is formatted specially.  The case of a single-line header is handled
specially.

Examples
========

These are three different 'UnixTree' formattings of the same trace.

Single-line headers:

  ┬ <()> h (Just 6) = <error: there>
  └─┬ <()> f 6 = <error: there>
    └─┬ <()> f 5 = <error: here>
      └─┬ <()> f 2 = "XX Y" <()>
        ├─┬ <()> f 1 = "X Y" <()>
        │ ├── <()> f 0 = " Y" <()>
        │ └── <()> g "X" " Y" = "X Y" <()>
        └── <()> g "X" "X Y" = "XX Y" <()>

Multi-line headers:

  ┬ ()
  ├ h (Just 6) = <error: there>
  └─┬ ()
    ├ f 6 = <error: there>
    └─┬ ()
      ├ f 5 = <error: here>
      └─┬ ()
        ├ f 2 = "XX Y"
        ├ ()
        ├─┬ ()
        │ ├ f 1 = "X Y"
        │ ├ ()
        │ ├─┬ ()
        │ │ ├ f 0 = " Y"
        │ │ └ ()
        │ └─┬ ()
        │   ├ g "X" " Y" = "X Y"
        │   └ ()
        └─┬ ()
          ├ g "X" "X Y" = "XX Y"
          └ ()

Headers and footers (this style is unchanged by this commit):

  ┬ ()
  ├ h (Just 6)
  ├─┬ ()
  │ ├ f 6
  │ ├─┬ ()
  │ │ ├ f 5
  │ │ ├─┬ ()
  │ │ │ ├ f 2
  │ │ │ ├─┬ ()
  │ │ │ │ ├ f 1
  │ │ │ │ ├─┬ ()
  │ │ │ │ │ ├ f 0
  │ │ │ │ │ ╞ " Y"
  │ │ │ │ │ ╘ ()
  │ │ │ │ ├─┬ ()
  │ │ │ │ │ ├ g "X" " Y"
  │ │ │ │ │ ╞ "X Y"
  │ │ │ │ │ ╘ ()
  │ │ │ │ ╞ "X Y"
  │ │ │ │ ╘ ()
  │ │ │ ├─┬ ()
  │ │ │ │ ├ g "X" "X Y"
  │ │ │ │ ╞ "XX Y"
  │ │ │ │ ╘ ()
  │ │ │ ╞ "XX Y"
  │ │ │ ╘ ()
  │ │ ╘ <error: here>
  │ ╘ <error: there>
  ╘ <error: there>

ntc2/haskell-call-trace