Add basic K2 storage framework implementation.

Due to the size of the commit, I'm submitting the unit tests in a separate request.
I don't see anywhere where you are using any of the Lock propeties that you could not get from syncrhonized blocks. If I'm right, could you use those instead?