issue #1804: Printer object, User Preference Print Settings

This is built on top of @gpazo's https://github.com/xtuple/xtuple/pull/1797 

Old (closed) PR: https://github.com/xtuple/xtuple/pull/1865

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
But if the picker has an `attr` attribute, that should be enough to bind the widget with the model attribute (or model meta attribute, if the attribute itself is not in the schema) as soon as the model is ready. And then any change to the picker should bubble up an event that will get caught here:
https://github.com/xtuple/xtuple/blob/6b40092460dd36c4c04df61f3dfafec51f6e12dc/lib/enyo-x/source/views/workspace.js#L22
and update the model.