Compile Class Removal

Removed the Compile class, so that Bind simply takes a reference to the
Cache instead. Used CRTP in order to implement the visitor pattern for
invariant classes that might also perform caching.
Slave Updates

Parameterized the Slave class according to the template rather than
relying on inheritance.
Removed Invariant Visitor and Added Action

Removed the templated visitor pattern for the Invariant class; it was
not needed. Also removed the Slave class, essentially replacing it with
an Action class which manages the action data for each state.