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
pita i know, but we should add a test that checks the behaviour of this buildTxn function in that if the addresses in the db are different to what's on the in memory object, we refresh without updating and try again