text: Design, implement in Java, test and document a set of classes for use in a program to manage an 
  online weekly personalized magazine service. Each week, the main part of the magazine is made 
  available to each customer along with some extra supplements as chosen by the customer. 
  - A customer has a name, an email address and a list of supplements which they are interested in. 
  - A paying customer has a payment method and a list of associate customers whom they also pay 
  for. 
  - An associate customer is a customer whose subscription is paid for by a specified paying 
  customer. 
  - A payment method could be by a specified credit card or direct debit from a specified bank 
  account. 
  - A supplement has a name and a weekly cost. 
  - The magazine also has a weekly cost for the main part. 
  - Each week, each customer gets an email telling them their magazine is ready to look at and listing 
  the supplements that they currently subscribe to. 
  - Each month, each paying customer gets an email telling them how much is being charged to their 
  card or account for the month and itemizing the cost by supplements for them and any of their 
  associate customers. 