Add evaluation implementations for nodes

In order to evaluate a formula with a given variable assignment, add
implementations to each node type so the tree can evaluate itself.
Add basic REPL

Add the `propose` binary which starts a basic REPL for playing around
with propositional logic formulae.

When entering a formula, the REPL will print out a truth table for that
formula.