guestIF: Adding guest agent API versioning support

With the increasing complexity on different version of the guest agent
and vdsm we're now introducing API versioning, so only supported messages
are exchanged between guest agent and vdsm.

VDSM:
  - Adds a field to the 'refresh' message reporting the highest API version
    supported by VDSM

  - Upon receiving the 'heartbeat' message check for the `apiVersion` field
    to know if the guest agent supports api versioning.
    - If the fields is not present:
      The guest agent won't support api versioning. And it needs to be
      disabled on the VDSM side and the version 0 has to be assumed. That
      simply means only messages can be sent which were supported before the
      API versioning was introduced.
    - If the field is present:
      The value of the field is supposed to represent the maximum version
      supported by the guest agent.

      VDSM then makes a `min(vdsmMaxApiVersion, guestAgentMaxApiVersion)`
      to determine the highest common value and uses this value as supported
      API version.
      When the value has changed since the last time a heartbeat was received.
      VDSM will send a message 'api-version' to update the guest agent about
      the determined value. And sets the internally stored effectiveApiVersion
      value to this new value.

Guest Agent:
    - Adds the field `apiVersion` to the heartbeat containing the highest API
    version supported by the guest agent

  - Upon receiving the `refresh` message without a `apiVersion` field, the
    guest agent immediately will revert immediately fall back to version 0
    To avoid sending any messages which are not yet supported.

  - Upon receiving the `api-version` message, the guest agent will verify the
    value received and sets the value to min(received, maxAgentApiVersion)
    which should, of course, result in setting the received value (this is
    just an additional step to ensure it does not send more than supported by
    VDSM.

Change-Id: I9095b528c2c910f12d5f170088a458bf11c71910
Signed-off-by: Vinzenz Feenstra <vfeenstr@redhat.com>
Reviewed-on: http://gerrit.ovirt.org/17004
Reviewed-by: Dan Kenigsberg <danken@redhat.com>