core/network.py: Implement a class that runs Man-in-the-middle attacks

This class represents an attack over a device in the network. This code
works but needs polishing because there's some duplication.
core/network.py: Add get_gateway, necessary for MITM
netcontrol/api.py: Move Device to core/network.py

`api.py` needs to use Device only to expose it in the API, whereas other
modules like `network.py` will make more extensive use of it. Since
`api.py` is highly likely to import most of the low-level modules, it's
better that they are able to import it from another module different than
api.py. Otherwise, it would be extremly easy to get circular imports.
ui/mainwindow.py: Use Device objects

Now, the functions defined in the API need to get Device objects. This
commit introduces the proper modifications in `ui/mainwindows.py` so that
it complies with the specs.
core/control.py: Use `network.MITM` in order to take control over devices

This was the intended purpose of all the commits before this one. This way,
we get rid of the burden of using a system call for this task, and we won't
have to worry about killing extra processes.
run_test_suite: Run Python tests with nosetests
extra/pylint.conf: Disable R0903 "Too few public methods"

This was in:

netcontrol/core/network.py:35: [R0903, Device] Too few public methods (0/2)