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.
let's add some useful comments as to the difference between an ind_core_group_table_t and an ind_core_group_t.
ideally there should be some top-level comment that describes what the objective here is; if you intend that comment to be lines 463-490 in of_state_manager.h, that let's add a pointer to that comment.