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
Replaced this line with: 
> child_process.spawn('/bin/lp', ['-d', printer, '-n', printQty, ' ', reportPath], function (error, stdout, stderr) {
        if (error !== null) {
          res.send({isError: true, message: "Error printing"});
          done();
        }
        else {
          res.send({message: "Print Success"});
          done();
        }
      });

... the datasource error:
> <<ERROR 2014-11-19T22:10:56.075Z>> Unrecoverable exception. spawn ENOENTError: spawn ENOENT
>     at errnoException (child_process.js:1001:11)
>     at Process.ChildProcess._handle.onexit (child_process.js:792:34)