Adding NAT class
Includes automatic NAT feature (mn --nat) and addNAT convenience method for topologies
fixes #111
Adding NAT class
Includes automatic NAT feature (mn --nat) and addNAT convenience method for topologies
fixes #111
undoing gateway in net and removing addNAT helpers
adding internet / nat example
more NAT cleanup of net and topo
fixing --nat option in mn
small fixes for NAT
Merge branch 'master' into nat

Conflicts:
	mininet/net.py
	mininet/node.py
Merge branch 'master' into nat
adding natnet example test
moving NAT to nodelib
adding line to natnet.py
Merge pull request #353 from mininet/devel/nat

Adding NAT class to NodeLib
Fall back to chroot() if setns() fails for mnt namespace

fixes #347
Cluster edition prototype: remote nodes and links.

We add a new experimental feature to allow Mininet to run across
a cluster of machines. This is currently implemented via a set
mix-in classes that provide remote nodes that are implemented
via a connection to a remote shell, and remote links which are
tunnels across servers. In this preliminary implementation,
both control and data connections are made via ssh, but this
could change in the future.

A MininetCluster class is provided which allows existing code
to be used with minimal modification - all that is required is
to provide a list of servers to use. A customizable placement
algorithm may also be specified. An experimental CLI subclass
is also provided to make it easier to examine node placement;
status and links commands can also check whether nodes and
tunnels are still running.

Although this is an experimental feature, it does include a
--cluster option to make it convenient to start up a Mininet
simulation over a cluster, and a script to assist with setting
up the prerequisite authentication via ssh key pairs.

The cluster feature is preliminary and missing some obvious
important features, such as parallel startup and multiple tunnel
types, which we hope to add in the future.