issue #1804: Printer object, User Preference Print Settings

This is built on top of @gpazo's https://github.com/xtuple/xtuple/pull/1797 

UAT:
1. Navigate to Billing > Invoices 
2. Print an Invoice and verify that it prints to a new tab on the browser

To setup and print to a printer:
1. Install CUPS and CUPS-PDF
2. Add the Printer to the Printer object in Setup > Printers. Use the EXACT name as the CUPS printer name
3. Navigate home then Actions > Preferences. Set Invoice to the CUPS installed printer.
4. Re-print Invoice, verify that it prints to the selected printer
I've never seen a `? :` operator inside of an `if` condition before! Impressive, but, there must be a clearer way to write this.