Switch state address struct into instance with mapping to state equivalent
Add Addresses() call to instance and implement openstack logic through it
Address review comments from dimitern and thumper
Merge in review changes to prereq branch
Tweak comments as requested by dimitern in review
ServerInfo implemented server-side
Tweak openstack address construction spelling as requested in review
Implemented Addresses, APIAddresses and CACert client-side
[r=gz] instance: Add Address type matching that in state

Splits new state Address type out into instance, which will hold all
relevant logic, leaving state with just a basic mapping of the same
data.
Changes after review
Merge trunk to resolve trivial import conflict in environs/openstack/export_test.go
Changes after review
[r=dimitern] state/api(server)/deployer: Addresses, CACert

Three calls implemented in the Deployer API
facades (client- and server-side), needed by
the deployer worker: StateAddresses(), APIAddresses(),
and CACert(). They match the same methods found
in state/open.go, except for StateAddresses(), which
corresponds to Addresses(), but was renamed as a
suggestion in the review.

https://codereview.appspot.com/11765043/

R=rogpeppe, themue
Fix environs tests using dnsNameFakeInstance which didn't implement wqAddresses()
[r=gz] Add Instance.Addresses() and use for openstack

Changes the Instance interface to require a new Addresses()
method. This will be used to present cloud-specific address
details in the generic fashion, which a future branch will
record in state.

The code includes the required implementation for Openstack,
maintaining support for the current quirks but shifting some
of the general logic into the shared instance/address.go file.

Currently all calls still go back through the cloud api, but
when the results are recorded in state and can be updated by
the state server, it will be possible make users of DNSName and
WaitDNSName consumers of machineDoc only.
agent/tools: do not embed version.Binary
[r=rogpeppe] agent/tools: do not embed Binary

I want to serialise Tools as part of the API
and it doesn't read well with an embedded
field (also there's a difference between Go1.0.2
and Go1.1 with embedded fields.

We could just define a Tools.MarshalJSON
method, but I prefer to make Tools marshal
nicely as-is.

I think it actually reads better without the
embedding too.

https://codereview.appspot.com/11760045/