Fix memory leak in Target.

Move freeing of Target._target_buf to another class, thus getting rid of
__del__() in Target. This enables Python to garbage collect Target
objects - before this gcing Target was not possible because of the
circular reference between Rule and Target.
Release matches after use.

Matches are allocated dynamically for the same type except the first
instance. Free them via _Buffer when the python object is
gced.