Optimize summary-based extension edit stash caches
* Send stash requests when the summary changes, so that things like
AbuseFilter caching have a higher hit rate.
* Make the backend API skip parsing if a fresh cache is already present.
This makes requests for summary-only changes much faster and more likely
to finish in time.
* Avoid sending the full text if only the summary changed since the
last successful stash. This works via an optional stashedtexthash
parameter to the API.
* Also always apply the lock in parseAndStash(), even for VE.
Change-Id: I9bfd74cf05411853b675c6f54ff5d8934bcfc54c