java_gen/GenericReader: BUGFIX version dispatch for hybrid

This commit fixes a bug in OpenFlowJ's GenericReader. GenericReader
previously dispatched to the version specific readers based on
bb.getByte(0). This turns out to be the first *absolute* byte in the
ChannelBuffer, not the first readable byte at the current readerIndex.

I.e., if several messages were queued in the ChannelBuffer, the Generic
Reader would always dispatch according to the version of the first
message.

In standard use, we pin the OF version after we receive the HELLO
from the switch. Hence, this was not a problem observed in practice.

It could cause problems for hybrid mode connections.
java_gen: API improvements for BundleMessages.

This commit introducesa BundleId class that models the bundle id,
and enables us to use OFBundleCtrlMsg in our usual writeRequest()
framework (in detail, we make the OFBundleCtrlMessage an OFRequest,
its response type is also OFBundleCtrlMsg).

It would be somewhat cleaner from Java's perspective to Factor
out the individual OFBundleCtrlMessage subtypes into their
own request/responses (like we do with flod_mods).
ClassId: output as unsigned int
java: check whether required fields have been set in messages

This helps by raising an NPE early if an incomplete messages is
to be constructed that is missing required members.

Previously, the message construction would succeed, but the
message serialization could fail with an NPE.
Merge remote-tracking branch 'upstream/master' into java-bundle-improvements
Merge into master from pull request #352:
Java bundle improvements (https://github.com/floodlight/loxigen/pull/352)