Cleaner agent status reporting

Machine and unit agent status is now reported under a separate "Agent"
struct. For compatibility reasons the existing agent status fields
have been left as is (but will eventually be removed). StatusData was
moved and only exists under Agent because it was recently added and
didn't make it in to any Juju release yet - there's no reason to
maintain backwards compatibility for that field.

If API versioning lands soon I will revisit this and remove field
duplication.

The main driver for this change is to allow clients to to easily
access the original status and info after the API has set the status
to StatusDown and munged the info string. These will be used by the
command line client in a later PR.
I've added some docs to cover this.