Add sending error to controller when version negotiation fails

There was no error message sent back to the controller when LINC
does not supported protocol version in the first message (that
is supposed to be the hello message).
The function performing the version election was unreadable and in now
refactored. The negotiation process is also more simple now as after
failed negotiation the connection is closed and we don't wait for any
message from the controller (see chapter "Connection Setup" in spec).
(Motivated by FlowForwarding/LINC-Switch#136).
Refactor functions in ofp_client and spec in of_protocol:decode/2

After review it turned out that some functions associated with version
negotiation in ofp_client need refactoring.
Spec of of_protocol:decode/2 also needed update.
(Motivated by FlowForwarding/LINC-Switch#136).
Merge pull request #46 from FlowForwarding/issue136

Add sending error to controller when version negotiation fails