Use batch operations in the hasMany decoder

#### Issue

The `hasMany` decoder does a bunch of unbatched operations, which causes a bunch of redundant events.

#### Solution

Batch them as much as possible.

I renamed `existingRelations` to `children` since I think it more accurately represents the function.

@hornairs @nickjs @kristianpd