------------------
* Implemented fast tracer and query objects in Cython. **MAY BE BACKWARDS INCOMPATIBLE**
To force using the old pure-python implementation set the ``PUREPYTHONHUNTER`` environment variable to non-empty value.
* Added filtering operators: ``contains``, ``startswith``, ``endswith`` and ``in``. Examples:
* ``Q(module_startswith='foo'`` will match events from ``foo``, ``foo.bar`` and ``foobar``.
* ``Q(module_startswith=['foo', 'bar']`` will match events from ``foo``, ``foo.bar``, ``foobar``, ``bar``, ``bar.foo`` and ``baroo`` .
* ``Q(module_endswith='bar'`` will match events from ``foo.bar`` and ``foobar``.
* ``Q(module_contains='ip'`` will match events from ``lipsum``.
* ``Q(module_in=['foo', 'bar']`` will match events from ``foo`` and ``bar``.
* ``Q(module_regex=r"(re|sre.*)\b") will match events from ``re``, ``re.foobar``, ``srefoobar`` but not from ``repr``.
* Removed the ``merge`` option. Now when you call ``hunter.trace(...)`` multiple times only the last one is active.
**BACKWARDS INCOMPATIBLE**
* Remove the ``previous_tracer`` handling. Now when you call ``hunter.trace(...)`` the previous tracer (whatever was in
``sys.gettrace()``) is disabled and restored when ``hunter.stop()`` is called. **BACKWARDS INCOMPATIBLE**
* Fixed ``CodePrinter`` to show module name if it fails to get any sources.