OFStateManager: new group API

A flaw in the OpenFlow group model is the lack of a table ID to distnguish
different kinds of groups (group_type doesn't count, it has its own semantics).
For example, LAG and ECMP groups will be handled by completely different code
in Forwarding and have very different types of actions allowed in the buckets.

The approach we've taken is to use the upper 8 bits of the group ID as a table
ID. So far the code to dispatch to different implementations based on the table
ID has lived in the Forwarding module, but as with flows this is applicable to
all Indigo users and so it makes sense to move this up to OFStateManager.

The new group API is very similar to the flowtable and gentable APIs. We'll
continue to support the old group APIs for a while until all clients have been
ported over.
OFStateManager: add API to acquire/release group references

When Forwarding receives a flow-mod (or group-mod) that references a group, it
should use these functions to look up the group by ID. The acquire function
increments a refcount on the group to ensure it won't go away while flows are
pointing to it.
OFStateManager: convert duplicate group-adds to modifies

This is in violation of the spec, but it makes pushing groups easier for the
controller. This behavior matches the flowtable and gentables.
OFStateManager: add API to lookup group without taking a refcount

This is useful for checking whether a group exists when validating a new flow.
OFStateManager: add weak symbols for old group APIs

These functions are now optional if Forwarding uses the new API exclusively.