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.
can we call this just `address_hash`?