Reuse instances if possible.

The Tip constructor is often pattern matched and can just be used as the
return value instead of using a constructor. Also favor the use of
`empty` over `Tip()`.

Signed-off-by: Gary Pamparà <gpampara@gmail.com>
Cleanup usage in the case of ⊥

Additionally hide some constants needed for internal housekeeping.

Signed-off-by: Gary Pamparà <gpampara@gmail.com>
Apply a trick suggested by @xuwei-k

Signed-off-by: Gary Pamparà <gpampara@gmail.com>
More cleanup, aiding readability.

Signed-off-by: Gary Pamparà <gpampara@gmail.com>
Merge pull request #470 from gpampara/minimize-creation

Reuse ==>> instances if possible.