Core API: orthogonal traversal methods (#707).

`DeepaMehtaObject` base interface has 2 new methods:
{{{
RelatedAssociation getRelatedAssociation(String assocTypeUri,
                                         String myRoleTypeUri,
                                         String othersRoleTypeUri,
                                         String othersAssocTypeUri)

ResultList<RelatedAssociation> getRelatedAssociations(String assocTypeUri,
                                                      String myRoleTypeUri,
                                                      String othersRoleTypeUri,
                                                      String othersAssocTypeUri)
}}}
Corresponding/similar methods are removed from the `Topic` and `Association` sub interfaces (see BREAKING CHANGES).
This make the tranversal API more orthogonal. In particular the 2nd method can now be called on `Association` objects as well.

`ResultList` has a new method:
{{{
void add(T item)
}}}

BREAKING CHANGES

- `Association`'s `getRelatedAssociation()` method has a 4th parameter: `othersAssocTypeUri` (analog to `Topic`'s `getRelatedAssociation()` method)

- `Topic`'s `getRelatedAssociations()` method returns a `ResultList` instead a `List` (analog to the `getRelatedTopics()` counterpart).

Core Service API:

- `getAssociations(String assocTypeUri)` returns a `ResultList` instead a `List` (analog to the `getTopics()` counterpart).

Core REST API:

- The `GET /core/topic/{id}/related_assocs` request (introduced 5 days ago) returns a `ResultList` instead a `List` (analog to the `/related_topics` counterpart), that is
{{{
{
    "items": [
        ...
    ],
    "total_count": ...
}
}}}
instead the plain array.

See #707.