Add basic support for Flow switching

This is incomplete work, but it compiles clean.  Wanted to get this
out as an earlier preview so folks can see how the Flow switch parts
come together in the device, and start planning programming from the
kernel (and OF client sitting on top of kernel).  (As well as hooking
up the DMA bits Neil has been working on).

Add new module rocker_flow.[ch] to support Flow switching.  Roughly
based on the abstract switch model presented in OF-DPA 1.0[1].

There are two hooks into the device framework:

 1) flow_ig() is the hook for front-panel ingress pkt.  If the front-
    panel port is put into "Flow" mode, every pkt ingressing on that
    port will go to flow_ig().  flow_ig()'s job is to run the pkt
    through the Flow switching machinery, by transforming, forward
    counting, and/or dropping the pkt.  You know, the OF stuff.

 2) flow_cmd() takes the raw DMA CMD desc buffer and TLV parses it
    to extract and process the flow and flow group commands.
    Ultimately, this step is managing the flow and group tables,
    represented by software hash tables (don't have TCAMs :).
    First pass on implemention will do brute-force linear walks
    hash tables to do flow match.  Second pass will introduce
    a hit cache to front the hash table for frequently-accessed
    matches.  The goal of the second pass is to get performance
    from O(n) to O(1), or atleast O(log(n)).

I'm using glib hash tables, since I see other modules in qemu using
them.  Simple to use is the draw.

I have this concept called a "flow world".  It's basically the
container for all the flow related global items such as flow
tables and constraints.  There will be a "L2/L3 world" also for
similiar purpose.  A front-panel port will belong to one world
or another.  If someone wants to implement another world, say for
instance a different Flow-based abstract switch, it should be a
plug-in for rocker.  Need a little bit more work here to abstract
the "world" plug-ins.  I just have something rough for this review.

[1] Documment is available from OF-DPA distribution tar ball at
of-dpa/doc/OFDPA_OASS-ETP101-R.PDF.

Signed-off-by: Scott Feldman <sfeldma@cumulusnetworks.com>
Add Flow ACL TLV and data structures

For some reason I had forgotten to add flow ACL table support.  What a mess!
Huge number of matching fields.  I don't like the way struct flow is bloated by
all these fields.  I have an idea how to fix that, but not in this commit.
I'll send an email with my thoughts.  For now, get the TLV defs in to match
OF-DPA fields.

Signed-off-by: Scott Feldman <sfeldma@cumulusnetworks.com>
Add front-panel port enable/disable register

ADD PORT_PHYS_ENABLE register to enable/disable front-panel ports.  Ports are
disabled on power-on.  Register takes a port bitmap.  No I/O on port if port is
disabled.

Signed-off-by: Scott Feldman <sfeldma@cumulusnetworks.com>