Massive restructuring

A lot of restructuring done so that this can be made into a Python package.

FullyRetroactive and PartiallyRetroactive methods now dispatch to the appropriate bits of code in order to optimize retroactivity.

Split out into three sub-modules, `basic`, `full`, and `partial`. Got imports to work correctly among the dispatchers and the sub-modules.

Now, everything is abstracted *very* nicely, and the elegane PartiallyRetroactive / FullyRetroactive wrappers work just like I want them to.