Refactor address set code for greater flexibility.

For some reason, this code doesn't work.  While the refactor does not
appear to break acceptance/14-list-addresses, I simply _cannot_ find a
reason why it won't work for acceptance/19-list-addresses-0.1.  If
anyone can review this code and let me know what I'm doing wrong, I'd be
most appreciative!