Synchronize Close(), fix race conditions.

Close() was not synced through the main dispatcher loop, so it could close
channels that were currently being written to by methods called from said
dispatcher loop. This leads to a crash. Instead, Close() now writes a
closeRequest, which is handled in the dispatcher.
Fix regex filters to match complete string.

If someone specifies

  service = "foo-service"

...they probably don't want it to match:

  service = "foo-servicebar"
Add initial aggregator tests.