openflow: Un-refactor ConnectionArbiter/Nexus

fdbd113d took ConnectionArbiter, OpenFlowNexus, and launch out
of openflow/__init__ and put them in connection_arbiter.py so
that __init__ could be loaded by itself (for the SDN debugger).
This has the effect of making connection_arbiter the real
OpenFlow "component", though, which isn't ideal.  Since I
think the only thing that was problematic was that it depended
on pox.core, I have just tweaked that aspect of it and stuck
it back in openflow/__init__.
pox.py: Refactor, cleanup, add help, etc.

pox.py had gotten a bit out of hand.  This is a start at
getting it in order.  Still more to do.
core: Minor refactoring

This also catches problems with the platform module which
is easy to break when porting Python to other platforms.
tests: Skip epoll tests unless on Linux

This sort of addresses noxrepo/pox#15

Not the broader issue, but at least the tests are skipped on
non-Linux platforms.  (The skip could actually be smarter,
e.g., by checking if epoll exists instead of by platform name.)
core: Fix bug from refactoring
pox.py: Move to pox/boot.py

pox.py is now just the startup pypy/2.7 magic and a call into
boot.py.

boot.py may have some issues from being moved -- I haven't really
tested much yet.  It should still be refactored somewhat to be
more modular so that it's more easily callable from other programs.
boot: Factor out deadlock detection code

There had been some code for helping to debug deadlocks put into pox.py.
This factors it out into its own component: misc.debug_deadlock.

It's possible that this should be merged with recoco_spy.

This closes noxrepo/pox#23
lib.graph: Add in dummy Node class

The Node class was removed as part of some cleanup Panda did, though
it's still referenced in one place.  Additionally, it may still be
nice to have an OPTIONAL node class with convenience methods that
just call methods on the containing graph (modeled after the
original methods back in like b4502d422).

This commit just adds back a dummy Node class with a note, which at
least has the effect of making all tests pass.
lib.addresses: Remove EthAddr int stuff

This closes issue noxrepo/pox#26

This removes the code to convert EthAddrs to and from int/long
which had been added at some point.  Doing this is problematic
and we don't want to encourage it.

Also, document some parts of the code.

Also incorporates Sam's removal of some duplicate functions
from d4d53f22062dd9ec2725d393702da7f332d7c7e5
Merge branch 'master' of git://github.com/noxrepo/pox
log_service: Fix regression

a644d058c69 introduced a regression where if messenger
wasn't up before the log service or didn't come up
IMMEDIATELY after the log service first tried to come
up, the log service would never be started.

Eventually, a component superclass/metaclass or some
startup helper function should take the place of
this code anyway.
Rename "controllers" to "distribution"
Move software switches to "datapaths"

This commit and the previous undoubtedly break things.
addresses: Add some netmask/CIDR functions
packet: Fix DNS packing

This is probably fixed in the POX-At-Home fork or something, but I
just noticed what looks like a bug -- the packed result for DNS
packets was never actually returned!
boot: Factor CLI into its own class

This is probably just a start at this, but you now get
core.Interactive always.  This has a "running" attribute
that tells if the CLI is on or not, and a "variables"
attribute with the CLI's local variables.
boot: Fix invocations of show_fail()

This function got renamed, but not all of the calls to it.
core: Add stuff for component initialization

This adds a number of features to core that are intended to make
it easier to write better component startup code.

This is based off of a quick idea and discussion and not a formal
design, so we'll see how well they work out...
l3_learning: Play nicer with gateways

Gateways threw off l3_learning in a number of ways.  This is a
quick attempt at addressing that.  See the pox-dev post from
today on the subject for more information.
l3_learning: ARP for unknown destinations

If we recieve a packet for an unknown destination, we now try
to find it by ARPing.