fixed distance() (but no random access support, yet)
refactored code to extract model_key and a few small fixes
model_value to kick projections off
added model_readable for an only readable projection
added forward(), remove_reference, added some test, fixed declval