state/api{,server}: more FullStatus API data

The FullStatus client API response now includes a new Relations field
containing relation and endpoint data.

Machines and units now also have a StatusData map in the FullStatus
response which holds extra status information that a client may choose
to use when displaying status. This was already being created but not
passed through the client API. The returned StatusData map is
whitelisted to prevent unintentional leakage of internal-only data of
over the API.

The client API test scenario has been extended to include a case of a
unit with an error with extra status data included.

Apart from providing opportunities for showing more detail in juju
status output generally, these new items will be used to display
relation details in the "juju status" output when a relation hook
fails (LP #1194481). This change will be done in a different branch.
Merge pull request #19 from mjs/1194481-relation_name_in_status.0

The FullStatus client API response now includes a new Relations field
containing relation and endpoint data.

Machines and units now also have a StatusData map in the FullStatus
response which holds extra status information that a client may choose
to use when displaying status. This was already being created but not
passed through the client API. The returned StatusData map is
whitelisted to prevent unintentional leakage of internal-only data of
over the API.

The client API test scenario has been extended to include a case of a
unit with an error with extra status data included.

Apart from providing opportunities for showing more detail in juju
status output generally, these new items will be used to display
relation details in the "juju status" output when a relation hook
fails (LP #1194481). This change will be done in a different branch.