New group API

Reviewer: @kenchiang

A flaw in the OpenFlow group model is the lack of a table ID to distinguish
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.
do you want to introduce a FOREACH macro for this?