Don't render unnecessary parentheses

For simple formulae like `¬p`, parentheses around the `p` are
unnecessary.

Encode this into the parse tree by defining a `literal?` predicate
method on `Node` which is false unless the formula in question can be
considered a single literal. Examples of literals are:

  * p
  * ¬p
  * ¬¬p
  * ⊤
  * ⊥

This will make the output of propositional formulae much easier to look
at.