pollable: use struct+private rather than class Neubot::Pollable

For the sake of simplicity, instead of using a struct inherited from a class,
now we use two structs, since we realised it is possible to have private methods
and attributes in structures as well.

What's more, in this way, it is possible to avoid the following,
dangerous construct:

  struct NeubotFoo : public Neubot::Foo {
      // nothing
  }

which forces you to static_cast from Neubot::Foo to NeubotFoo, a thing
that is a memory error unless NeubotFoo == Neubot::Foo.

Therefore, by avoiding a possibly dangerous idiom, we improve the
quality of our codebase.