Cache invalidation infrastructure for Parsoid varnishes, first cut

This patch develops a hook-based cache invalidation infrastructure for the
Parsoid varnishes, according to
http://www.mediawiki.org/wiki/User:GWicke/Minimal_performance_strategy_for_July_release.

The deferred job is based on HTMLCacheUpdateJob so that the recursive batch
splitting logic can be shared. A good amount of edit-related hooks are
registered, mostly following the example of the FlaggedRevision extension. It
looks like we'll get away without a need for any core modifications.

Asynchronous refresh and PURGE functionality is implemented using curl_multi.
Additional information about the predecessor revision id and the reason for
the update (title triggering it and edit vs. template vs. image updates) are
passed in an X-Parsoid header.

TODO:
- Test and refine with actual Varnish servers

Change-Id: I47331bf638dc93cf444ceeecb89ef9f4c3f40ae3
Merge "Cache invalidation infrastructure for Parsoid varnishes, first cut"