refactored (reg)filter and clean functions

OOPs, I did it again. In order to tackle code duplication, the
implementation is sort-of object-oriented. Not only did duplicate code
go away, but it also became abstract enough to become the `clean'
function backbone.

Another side effect of this refactoring is that all three function are
now enhanced with better garbage cleaning, hence the new tests.
the module learned to log calls and return values

This improves traceability and eases debugging. Parameters are logged
too, so it becomes easier to follow the code path of a request in the
VCL and discover unexpected return values (for instance with a wrong
regex for `regfilter').

A little example:
$ varnishlog -I 'VCL_.*'
1234 VCL_call     c recv
1234 VCL_return   c lookup
1234 VCL_call     c hash
1234 VCL_call     c vmod_regfilter("/article?lang=fr&utm_medium=varnishtest", "utm_.*")
1234 VCL_return   c "/article?lang=fr"
1234 VCL_return   c hash
1234 VCL_call     c hit
1234 VCL_return   c deliver
1234 VCL_call     c deliver
1234 VCL_return   c deliver

Or with Varnish 4:
$ varnishlog -I 'VCL_.*'
1234 VCL_call     c RECV
1234 VCL_return   c hash
1234 VCL_call     c HASH
1234 VCL_call     c vmod_regfilter("/article?lang=fr&utm_medium=varnishtest", "utm_.*")
1234 VCL_return   c "/article?lang=fr"
1234 VCL_return   c lookup
1234 VCL_call     c LOOKUP
1234 VCL_return   c deliver
1234 VCL_call     c DELIVER
1234 VCL_return   c deliver

It may not be a good idea for production, so the next step is to make
logging optional.