snmp: use pysnmp instead of NetSNMP

We avoid a CPython extension and become compatible with
Pypy. Moreover, we get a reliable SNMPv3 support. The differences
between the two implementation are notable but they are essentially
reduced in the new `snmp.py` module.

There is still a "bug" with GETBULK. pysnmp automatically walk when
doing GETBULK. Therefore, we get more elements that we would like and
we are not able to go outside table. We will fix the tests in a later
commit.
snmp: rename getnext/getbulk to walk

PySNMP `getnext()` and `getbulk()` methods are in fact walking the
tree using either GETNEXT or GETBULK. Therefore, we remove most of the
logic from walking from manager and let PySNMP handle the
problem. Tests are updated.

The `bulk` parameter of the session can be set to `False` to disable
GETBULK or to the maximum number of repetitions to use.