Consolidate summary generation

Instead of looping through the changes a number of times to generate the summary this branch merges the functions into one.

QA: There are no visual changes in this branch, the summaries should be generated as before.
Instead of using a for loop and then checking the key value you can use `Object.keys` which will only return the proper values.
`Object.keys(ecs.changeSet).forEach(function(key) { ... });`