[4.2] File Store Increment/Decrement [TAKE 2]

I've had another go at #4695. I think I've managed to retain the cache expiration times. Tell me what you think.
Can you not use extract here? It's hard to follow what variables are available after the extract.