make some middlewares not require a crawler

Technically scrapy does not require middlewares require a crawler: https://github.com/scrapy/scrapy/blob/master/scrapy/middleware.py#L32

But all our contrib mws do (and fail on L35 if they are not instantiated from a crawler).
Some mws really require a crawler (for access to stats for example), but others don't. This PR fixes the others.

Offsite middleware can also be converted to not require a crawler, but I wanted some feedback first: do we want such a change?