packet.arp: Don't parse weird address types

When we see ARP addresses with strange address types (e.g., anything
besides Ethernet and IP), we no longer claim to have successfully
parsed the ARP packet.

Previously, we claimed to parse correctly, but didn't retain the
weird addresses, meaning that we could not then re-pack successfully.
We could easily have it store the weird addresses as raw bytes, so
that they could be re-packed, but most code probably assumes the
addresses are Ethernet and IP and it's not clear there are actual
use cases for anything else.
libopenflow: Fragment intelligence for from_packet

The spec specifies specific behavior for matching fragmented packets, and
this makes that easier.
packet.dhcp: Allow specifying options by class

You can now specify DHCP options by their class and not just their code.
openflow.nicira: Remove unused import
datapaths: Use shutdown() for ioworker

This should do a clean close of the worker which means that any final
data will hopefully actually get sent.
misc.arp_helper: More options for source MAC

The source MAC always used to be derived from the DPID, but using a custom
function to do so.  Firstly, this has been updated to use
Connection.eth_addr.  Secondly, there are now options to override this or
to use the *port* MAC instead.

This also adds some docstrings and breaks out some paramters to make the
code a bit more readable, and possibly fixes a bug in send_arp_reply().
core: Print info about waiting modules later

Previously, info about waiting modules was only printed when transitioning
to up state.  This meant that any unsatisfied waiters added *after*
transitioning to up state never had a message printed at all.  We now
print the waiting message every time a new waiter is added while up.  It's
possible this will be annoying, and we may want to filter it for only new
(post-up) waiters.