Attempt to make types transparent across sjacket boundary

Not sure how robust this is, but looks like a step towards less annoyance / surprise
Add pending test for setting generic (nested) attributes
Implement more features, simplify interface

Too much magic in those helper functions maybe?