Add storage behavior for property keys

Here's a first proof of concept for #204 – I've moved the reflection bits over to `+initialize`, maybe there is an easier way to break down the individual sets though.

I haven't added any documentation so far, mostly because I'm not fully sold on the names yet (though I fail to come up with anything better).

Closes #204