add Calculator class, update globals based on it

A step closer to encapsulated data. Here I introduce

* a basic Calculator class

* the `puf` module just sets variables on a `Calculator`

* we update the global namespace based on the attributes of an object

This will permit me to compare the calculations of two Calculators in memory, which is needed for drop-q.