Global block cache

First stab at it.

Not sure if my assumptions of how `files.Set` for `protocol.LocalDeviceID` works, but since I never got a response to the email, I'll give you the opportunity to educate me here.

Haven't actually tested if it works apart from the tests... But given there might be multiple iterations of this, I won't bother with extensive tests just yet.

Edit:
I have now tested it, as it seems to suffer from the issue described below.