WIP - Actions :: Client API

Proposed public API for Actions - this PR is primarily to get feedback on the API
It would be a nicer interface if it didn't expose so much of the
params details, I think.  Also, please add doc comments for
all the exported functions added in this PR - it makes much
easier to review if the intended semantics are laid out.

For example:

    // GetDefinitions returns the actions defined on the given services.
    // Each element in the returned slice holds the action definitions
    // the the service named in the corresponding index in tags.
    func (c *Client) GetDefinitions(tags ...names.ServiceTag) ([]ActionDefinitions, error)

?

Assuming the tags really are service tags, I'm wondering whether
it really is best to implement GetDefinitions this way.
The action definitions are actually attached to a charm, not
a service (any service with the same charm will have the same
actions). How about losing this method and instead changing
CharmInfo so it returns information on charm actions too?
That should be functionally equivalent, and makes caching
more obvious from the client's point of view.