Adding domain object collection decorator to ease object decoration

Currently in the controllers we have to iterate over an array of domain objects, calling `decorate` on the decorator provided, but this is repetitive and unnecessary.

This PR adds a collection decorator, which decorates a collection (array) of domain objects in a single method call.

Fixes #38 

TODO:

- [x] Create implementation for the collection decorator
- [x] Replace decorator logic in controllers with the new collection decorator