OVSDriver: add skeleton for translating OF 1.3 set-field actions

This is hacky because loci does not yet support the set-field action.

I also added code for set-field vlan-vid, and IVS now passes the OFTest 1.3
actions.SetVlanVid testcase.
Merge into master from pull request #45:
update indigo to 0cb4b2e393c991b80ef4fc215072ad0971f81ce5 (https://github.com/floodlight/ivs/pull/45)
OVSDriver: do not reinstall kflow with same actions

This requires storing the datapath actions list for each kflow.

This reduces the time to revalidate a kflow whose actions have not
changed by 50%.
OVSDriver: workaround kernel errno bug

Older versions of the openvswitch kernel module had a bug where they returned
garbage errno values in case of success.

This change ports the workaround already in ivs-ctl to the OVSDriver transact
utility method. It also increases the range of valid errnos based on MAX_ERRNO
in the kernel source.
OVSDriver: only sync stats during revalidation if OpenFlow flows changed

This reduces the time to revalidate a kflow whose OpenFlow flow set has not
changed by about 90%.
Merge into master from pull request #44:
OVSDriver: add skeleton for translating OF 1.3 set-field actions (https://github.com/floodlight/ivs/pull/44)
Merge into master from pull request #46:
OVSDriver: workaround kernel errno bug (https://github.com/floodlight/ivs/pull/46)
Merge into master from pull request #47:
optimize kflow revalidation (https://github.com/floodlight/ivs/pull/47)
Support for OF 1.3 OXM actions.
Dupport for decrementing IPv6 hop limit
OVSDriver: replace kflow->flows with kflow->stats_ptrs

We have to track stats on more than just OpenFlow flows - table, group, and
meter stats, for example. Since we were only using the flows array for stats
purposes replace it with an array of pointers to struct ind_ovs_flow_stats.
OVSDriver: add table matched stats to kflow->stats_ptrs

Retrieving the table stats from the datapath will not work with multiple
tables.

Once we have multiple tables, each one that a kflow traverses will have its
matched or missed stats struct in the stats_ptr array.
OVSDriver: move per-table state into struct ind_ovs_table
OVSDriver: send all tables in table_stats_reply
OVSDriver: insert flow into table based on table_id
update indigo to f71516e9b53aadf18a0d974c9d3582c7160ea603
OVSDriver: compute actions in ind_ovs_kflow_add

The previous code copied the actions used to execute the packet in the upcall
handler into the BH request. This was incorrect because the flowtable could
change between the request being enqueued in an upcall thread and handled in
the main thread.

This change moves the flowtable lookup and action translation into
ind_ovs_kflow_add. This is now symmetric with ind_ovs_kflow_invalidate.
OVSDriver: move actions nlattr creation out of ind_ovs_translate_actions

Most callsites needed to use nlmsg_find_attr to find the attribute afterwards
anyway.

Unfortunately we have to create a wrapper for nla_nest_end to make sure it
doesn't delete the attribute if it would be empty.
OVSDriver: remove support for OFPP_TABLE

Combining arbitrary packet-out actions with OFPP_TABLE is difficult. Instead of
doing the work to support this in the new multi-table pipeline I'm ripping it
out.

If we want to support OFPP_TABLE in the future we could consider doing it for a
very restricted set of packet-out actions (single output to OFPP_TABLE).
OVSDriver: replace ind_ovs_lookup_flow with ind_ovs_fwd_process

This replaces the single-flow result with a new struct ind_ovs_fwd_result which
contains the actions and stats pointers.