Relation API Revamp

This pull request implements the changes to the API to access Relation objects in runtime, as agreed in last week's meeting.

The breakdown of the changes is in the comment of 31ad05b.

The changes in this pull request fix the bug regarding the NoSuchFieldError when accessing Relation objects when using different backends.

Please review the change set, as it is an API disruption, and is sensitive code.