Roles in a DomainRelation are now sorted, according to the role's name and class.
Changed the API to access the runtime Relations.

The breakdown is as follows:

  * The Relation fields generated in Base classes are no longer accessible.
  * Relations can now be accessed by calling X.getRelationY where X is the class name, and Y is the relation name.
  * The relation getter method is now generated in both ends of the relation, and returns the same object (thus allowing for relation listeners to be added in either side).
  * Removed the fields containing the inverseRelation. It is now invisible to the programmer which side is the direct and the inverse.
  * In the inverse side, the relation is accessed via the getter method, thus removing the need for the field.
  * The order of the relation no longer reflects the order of the 'playsRole' in the DML, and is now consistent with the role names.
Bugfix: Remove optimization in DirectRelation

  * When adding/removing to a relation, the commit
  d1cff4faf035c5874f24235639a1698e7bfbd883 was optimizing the operation, by
  checking whether the firstRole's add/remove had succeeded.  This was a
  problem when setting to null, because it would call add (on the role), which
  would return false (in case of a RoleMany), thus not running the add/remove
  for the other role, which was actually doing the add/remove.
Renamed 'getRelationSlotNameFor' to 'getRelationMethodNameFor'.
  * Relations are now accessed by a method instead of a field, change Code Generator
    method name to better reflect the new reality.
Merge pull request #69 from fenix-framework/feature/relation-api

New Relation API