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.