invoice: first pass at using recordIds in dao

Switch all getInvoicesByAccount* calls to lookup invoices by accountRecordId.

This requires the internal context to be correctly populated. I think moving forward
we should always populate the accountRecordId when creating the internal context,
so that the lowest layers can always use it.

This patch fixes most invoice APIs to populate it. The beauty of it is that these changes
happen behind the public APIs. Only low-level invoice tests had to be changed, all other
tests in the system continue to pass as expected.

Signed-off-by: Pierre-Alexandre Meyer <pierre@mouraf.org>