Refactored Customer Address Handling

* Reduced duplicate address hashes
* Added add_address method for easily adding an address to a customer
* Changed `has_changed_address?` to `address_exists?` more declarative and less specific. The method is testing the existence of an address, not if the customer's address has changed.

This is a helpful change in my situation because I'm using the customer service in some customizations and having more generic/reusable methods to build off of was helpful.
Is this being used anywhere? Dont think we should add code here thats not used anywhere considering this is supposed to be a standalone app