add support for design filters

the design documents may contain a `filters` objects that can then be
used to subscribe to the change stream of the database.
add support for stream filtering on client side

it is now possible to filter results on the client side as well, for
example, to only treat notification that deleted a document, even if the
subscribed stream does not filter anything, one can write:

  for((id, None) <- changes) { /* do something */ }

which is equivalent to

  changes filter {
    case (_, None) => true
    case _         => false
  } foreach {
    case (id, _) => // do something
  }

this can be used to avoid opening many connections to a database if
several handlers need different filtering