Rewrite pollable using C++

Bump the API, because the C signature of NeubotPollable's
construct() and attach() changed.
Use a destruction strategy compatible with C++

When you destruct a compound object in C++, the derived classes
are destroyed before than the base classes.

Therefore, we cannot have a destruction strategy that starts from the
derived objects, reaches the base objects and then propagates back the
destruction notification, as we do in Neubot.

Rather, the destruction shall start from the derived objects and
stop once the base objects are reached.
pollable: implement timeout
Merge branch 'pollable.cpp'

This branch contains the work, done by Alessandro and me, that starts
to slowly switch the code from C to C++.