Use interfaces in functions signatures.

Given the interface

    type Client interface { ReadMessage() (Message, error) }

The struct client implementing the ReadMessage method as follows

    func (c *client) ReadMessage() (Message, error) {

would implement the interface while the struct client implementing the
ReadMessage method as follows

    func (c *client) ReadMessage() (*message, error) {

would not implement the interface. This commit replaces specific
implementations in fuction signatures with corresponding interfaces.