ifinfmsg: use O_CLOEXEC for open netns
global: use mixin classes — prepare for netns

NetNS should provide all the same functionality, as IPRoute does. But the main
difference of NetNS will be the lowest socket level: all `recv()`, `sendto()` etc.
methods will be proxied to a separate process, running in some network
namespace. So, this patch provides all the inheritance chain up to IPRoute
implemented with mixin classes — to make it possible to reuse the code for
NetNS.

Bug-Url: https://github.com/svinota/pyroute2/issues/84
netns: alpha-version

Not documented and not well tested yet, though already able to be used. To
run NetNS::

	from pyroute2.netns import NetNS  # later will be changed
	netns = NetNS('test')  # test — netns name
	netns.get_links()
	netns.close()

Since NetNS starts a separate process, the `close()` call is mandatory to
clean up all the library stack.

Please notice, that IPDB can be run with NetNS, but the `release()` still has
bugs and will be fixed later::

	from pyroute2 import IPDB
	from pyroute2.netns import NetNS

	netns = NetNS('test')
	ip = IPDB(nl=netns)
	print(ip.interfaces.keys())
	ip.release()  # has bugs — doesn't work now

Please be aware, that you should have root access to run the library in a
netns. If you haven't, library will silently conrinue to work in a main netns.
This behaviour will be fixed later.

Bug-Url: https://github.com/svinota/pyroute2/issues/84
netns: fix cmd lock

The lock name interfered with locking factory.

FIXME: the locking factory should be renamed?

Bug-Url: https://github.com/svinota/pyroute2/issues/84
netns: re-export from the root library namespace
netns: initial documentation

Bug-Url: https://github.com/svinota/pyroute2/issues/84
ifinfmsg: temporarily rollback O_CLOEXEC path

There is no such flag in Python.
netns: create/remove netns + docs added

Bug-Url: https://github.com/svinota/pyroute2/issues/84
Merge pull request #1 from svinota/master

synch with original