Multi-link topology support

Here is a slightly different approach to supporting multiple links. I've tried to:

 * Make `Node.MultiGraph` more compatible/isomorphic with `networkx.MultiGraph`
 * Ensure that nodes (`node1`) and their parameters (`cls1`) are matched correctly when the link constructor is called
 * Add a `convertTo` method to ease converting `Node.MultiGraph` to `networkx.MultiGraph` (you can also just override `Topo.build()` with `g = networkx.MultiGraph()`

However, there are still a bunch of things I'm not entirely happy with:

 * The port management scheme is clunky
 * To preserve the old clunky API, `Topo.port` returns a single tuple if there is only one port and multiple tuples if there are multiple ports
 * I'm not sure if Cody's space/time tradeoff is better than my time/space tradeoff in the clunky port management code
 * However, since `Topo.links()` can return the link information, we don't actually call `Topo.ports()` any more.
 * The polymorphic parameter list of `Mininet.addLink()` is more convenient now (you can pass in names or nodes, as well as a dict or in-line parameters), but also more clunky (since the node specifier is already in the parameter list, it's redundant to have it as a parameter); supporting this is a bunch of ugly lines of python.

Although they may not belong in this patch, there are some additional things I'd like to have, including:

* A nice way to plot topologies with multiple links. Right now, you can use
  `nx.write_dot( topo.g.convertTo( nx.MultiGraph ), 'multigraph.dot' )`
  to write out a `.dot` file, which can then be plotted using various methods. Unfortunately
  `MultiGraph.draw()` doesn't do a good job of drawing multiple links.






The purpose of having both `paramDict` and `params` is to allow us to

1. Call this method by using `addLink( foo, bar, params )` where `params` is the dictionary of link 
parameters, which contains `node1` and `node2`
2. Preserve the Mininet 2.0 positional parameter names, `node1` and `node2`

Alternately, we could either:

1. Rename the parameters (e.g. `src, dst`)

2. Remove `node1` and `node2` from `params` before we call `addLink`, and pass them in as positional arguments.