Feature/protect core methods

This prevents defining properties that are already instance methods on your Resource class.

There is maybe some cause for discussion about whether this paints with too broad a brush.  Note that it breaks a few existing tests which use a `name` property.

Closes #44