Introduce Finalizers to avoid cycles

As per #8, there was a leak due to cycles and the definition of a
`__del__` destructor. This instead uses weak proxies to be notified of
deletion and invoke the correct destructor.

A new type, `_BaseFinalizer` is introduced, where one can override the
destruction behaviour by defining `destructor`.
Refactor Poppler to use _BaseFinalizer
Merge pull request #10 from lazka/finalizer

Introduce Finalizers to avoid cycles