improve argument checking in SetIpTos.initialize()

Only the 6 high-order bits of the ToS octet are allocated to DSCP value.
When it comes to constructing a C structure for OFPAT_SET_NW_TOS action,
there is a respective assertion in function append_action_set_nw_tos().
Once the assertion is triggered, the controller will terminate with a
message:

...trema/src/lib/openflow_message.c:1547: append_action_set_nw_tos:
Assertion `( nw_tos & ~0xfc ) == 0' failed.

A sample code triggering this would be:

send_flow_mod_add(dpid, :actions => [ SetIpTos.new(1) ])

The check added to SetIpTos.initialize() makes sure an exception is
thrown before the invalid value reaches the C function, such that it is
now possible to handle the error at Ruby level.
add body length check to VendorAction.initialize()

For OFPAT_VENDOR the action body length is defined to be a multiple of
8. Add a check to the constructor to make the Ruby layer detect the
error condition rather than the C layer.
Merge pull request #298 from infrastation/develop

improve input checks in Ruby action classes