Introduce Printer class

The first 6 patches are straightforward cleanups in preparation for adding the Printer class. 06ade05 creates the Printer class, independent of fef6ecf, which migrates the existing project to use the Printer class. I did *not* modify tests because I don't know how to run them. I tested fef6ecf functionally (add account, add printer, print to printer, list printers, etc).