Minor Changes to Comments and Contract

Edited some comments, renamed `MetaProperty.declaringClass()` and generified `MetaProperty.set(Object, Object)`.

I also have some questions, which I put into the code and additionally added as comments on this pull request. Of course I plan to remove them if this pull request is considered to be merged.
Why is `null` permitted as a `propertyName`?