If you happen to have two beans of the same type you can still
have a shared list but not with a sense of direction.
I.e. quest->sharedQuest returns all the quests that follow the first one,
but also the ones that are followed by the first one.
If you want to have some sort of direction; i.e. one quest follows another one
you'll have to use an alias: quest->target, but now you can't use the shared list
anymore because it will start looking for a type named 'target' (which is just an alias)
for quest, but it cant find that table and it's not possible to 'keep remembering'
the alias throughout the system.
The aggr() method solves this inconvenience.
Aggr iterates through the list identified by its first argument ('target' -> ownQuestTargetList)
and fetches every ID of the target (quest_target.target_id), loads these beans in batch for
optimal performance, puts them back in the beans (questTarget->target) and returns the
references.