Add visitor functionality to parse tree

Augment the parse tree hierarchy to descend from a common `Node` class.
All parse nodes now define a `children` method which is used by the
`Visitor` module to visit various nodes in a tree.
Explicitly define gem dependencies

This is standard practice for gemspecs.
Add AtomFinder utility class

Add utility class that makes it easy to extract the atoms present in a
propositional logic formula.
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.