Inverse filtering of catalogs

I needed to do some inverse filtering on my catalog (e.g. return the events that *do not* match the given criteria).

Here are the modifications I made to `Catalog.filter()`:

- Catalog.filter() can now return inverted results, if "inverse" is passed
  as an argument.
- Code reorganization for easier readability

TODO:
- docstring
- testing?