Added code to avoid modules running twice

This is a major update to all of the code.  There was a big issue where
if one module's output was used as an input for two or more modules,
then the module would be "run" multiple times.  I fixed this issue by
adding a "cycle" count which increments during every interrupt.  This
cycle count is used by the modules to avoid accidentally running twice
during an interrupt cycle.

Some major changes include:

Modules no longer implement the run() method.  Instead, that's called
"compute()".  Also, when fetching an input's value, instead of doing
something like:

$this->cutoff_input->run()

You now do this:

$this->readInput(cutoff_input);

This keeps the code nice and clean.  Otherwise, you'd have to pass
around the "cycle" variable, which I'm trying to keep people from having
to think about.