function composeReducerObjects(reducerObjects) {
  if (reducerObjects.length < 1) return null;

  return reducerObjects.reverse().reduce((previous, next) => {
    // if we don't have any reducers in previous object continue with next
    if(previous === null) { return next; }

    //mutate the previous object by composing the reducer methods
    for(let key in next) {
      previous[key] = composeReducer(next[key], previous[key]);
    }

    return previous;
  }, null);
}
Combines the given reducer objects left to right
@param {Object <array>} reducerObjects - An array containing objects consisting of reducer methods as properties