Invoicing [PD-870]

Ensures that invoice emails remain static and that invoice ids provided to the user are unique.

All tests pass.
If you wanted to get rid of the inner loop
```python
for offline_product in offline_products:
    kwargs['product'] = offline_product.product
    product = PurchasedProduct.objects.create(**kwargs)
    products_created.extend([product] * offline_product_quantity)
```