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).