Add basic K2 storage framework implementation.

Due to the size of the commit, I'm submitting the unit tests in a separate request.
To make sure that it can be instantiated later on, but (as mentioned below) I'll try to reduce the amount of reflection going on.