Revamp custom topology input
Defining custom topologies, switch types, controllers, and hosts is nowmuch easier. Plus, all Ripcord-specific stuff has been moved out.
Add static code checking for style and errors
This required a change to logging, which now uses a singleton pattern.
For all future checkins, 'make codecheck' should pass.
Add reversed version of the SingleSwitch topology
Possibly useful for adding custom port mappings.
Make Ripcord-specific topologies optional
If ripcord.dctopo imports properly, then include its topologies in thelist of available ones. Also replace topo.py with new generictopologies and update paths.
Support more topologies
Add MAC auto set for switches
Also use indexing for DPIDs to avoid zeroed MAC
Move TreeNet to new Mininet API
Also remove all non-object-oriented legacy Mininet code and updatetests.
User-space compatibility is untested, but most of the code for it isstill in.