PCT-671: Support for explain

Alpha prototype, WIP
For me using named return variables is simply more clearer. We talked about this in the past.
To not repeat myself:
http://golang.org/doc/effective_go.html#named-results
https://github.com/percona/cloud-api/pull/6#discussion_r8566815

@daniel-nichter @helginet If you guys really want to stick to not use [named results](http://golang.org/doc/effective_go.html#named-results) then I can adjust to that.

Simply for me this:
```func CreateAgent(orgId uint, agent *proto.Agent) (uuid string, err error)```
Is much more clearer function definition than this:
```func CreateAgent(orgId uint, agent *proto.Agent) (string, error)```
Because what is that `string` thing returned by `CreateAgent`? With `(uuid string, err error)` you immediately see we are returning UUID.

Also it helps not to juggle with `:=` whenever I need to move line like this `err = errors.New("")` above line with declaration `err := errors.New("")`. Just for that I would add at beginning of function `var err error`.

Anyway, let me know what's the decision.