Added validation, a setter in FakeDataBase to allow for a non-discount item to be added, a receiptHistory array in Customer, and cleaned up data flow so LineItem no longer has any knowledge of Customer.