Create CostInvoices next to Invoices, which will be used to hold cost prices.

A part of the InvoiceImpl has been moved to the CommonInvoiceImpl, without
changing its interface or JSON saving properties. This means the
CostInvoiceImpl can use the same properties and logic. Also, all data for an
invoice or costinvoice can be created in a CommonInvoiceImpl, and then
constructing the final object is trivial.
Allow InvoiceBuilder to build both Invoices and CostInvoices. Add tests for building both Invoices and CostInvoices.