openflow: Better support for vendor extensions

This is definitely not ideal yet, but there are some sticky
design considerations remaining to consider.
libopenflow: Add condition for flow mod equality

The flow_mod equality check was missing a condition (on the
new data attribute).
openflow: Add nicira component for OVS support

This component is a first stab at supporting some of the
Nicira extensions to OpenFlow as implemented by Open vSwitch.

It's subject to change.  And bugs.
forwarding: Add Nicira-extension learning switch

This is an L2 learning switch that uses Nicira extensions provided
by Open vSwitch.  Mainly, it utilizes multiple tables.
of_01: Fix nasty typo in handle_PORT_STATUS

The port status 'reason' was checked against the enum for
flow_removed_reason instead of port_reason.  Unfortunately,
the names only differ by one (similar looking) character.
Fixed.

Signed-off-by: Murphy McCauley
arp_responder: Only learn from arp.hwsrc

This fixes arp_responder to learn only from arp.hwsrc and
not the source ethernet MAC address.
README: Update slightly
flow_table: Fix timeout checking
flow_table: Check before removing ops from pending

In at least some cases, ops aren't in the pending list.  It's
possible they never are (?).  This checks before trying to
remove them to avoid an exception.

This closes issue #40.
flow_table: Remove ops from op-to-barrier map

This removes entries from the op-to-barrier map when we hear
the barrier.
libopenflow: Add flip() to ofp_match

This function returns a copy of the match with the source and
destination entries swapped.
of_01: Allow HELLO messages with arbitrary version

We now allow HELLO messages with different version numbers, hoping
that the other side shifts down to 0x01 for subsequent messages.
Non-HELLO messages still trigger a disconnect.
l2_multi: Various improvements/changes

This does some cleanup and reworking of l2_multi:
* Install paths in both directions
* Set in_port in flow entries
* Wait for path to be installed before forwarding packet
* Various cleanup/modernizing

Note: you must now run discovery explicitly.
libopenflow: Fix multipart stats reply length

The length of multipart ofp_stats_reply messages was being
calculated improperly (the number of parts was being used
rather than the sum of the part lengths).  Fixed.
packet: Many improvements to DHCP

In particular, this adds classes to represent many DHCP options,
making it pretty easy to actually understand and create meaningful
DHCP packets.
packet: Fix whitespace in DHCP
misc: Add DHCP server

This adds a quick and dirty DHCP server.  It's not particularly
well tested or anything, and it's not nearly as configurable
as it should be.
core: Make listen_to_dependencies more flexible

You can now specify listener options.
samples: Add mixed_switches demo

This little demo shows one way to load different components
for different switches.
dhcpd: Honor broadcast flag

If a client requests broadcast responses, we now do so.