generalizes loggingfilter

Fixes #143

## motivation
Described in #143

## implementation
Described in #143

## changes in api
The http logging filter's type has changed slightly, so that .log takes a REQUEST, where REQUEST <: Request.  Internally, this is never breaking, because we can prove that we always send REQUEST to log.  However, someone could theoretically be abusing this log, although it seems unlikely.  They would have to have subclassed the http LoggingFilter, and be making calls to it from inside of that subclass, passing it a Request, of a different type from the REQUEST that they parameterized LoggingFilter with.

## second thoughts
I added the exception logging because the http LoggingFilter logs exceptions, but I'm beginning to think it might be scope creep, since it's easy to just add a MonitorFilter which logs exceptions.  On the other hand, if you hate it so much, you can override LoggingFilter's logException method to be a noop.  I think this is the right way to do it, because it gives users more power, which seems like the scala way.