state: add Machine.WatchAddresses

Introducing a watcher for machine addresses.
We'll initially use this behind the API for
watching a relation unit's addresses, until
we have a document containing network-specific
addresses.

Also, don't update a machine doc's addresses
if they're already equal to what we want to
set them to.

Fixes https://bugs.launchpad.net/juju-core/+bug/1289815
I'm not sure we should care about ordering? I guess if the addresses are tried in order when connecting we should.