Extract filter classes from NetworkAccessManager

NetworkAccessManager was getting pretty complex, and adding something that
modifies or intercepts requests is becoming a common change.

This change introduces a chain of filters which can modify a request or return
a response of their own.

To start with, this extracts the concerns of fixing missing content types,
setting custom headers, and intercepting blacklisted requests.