recursiveClone = (object, queryString, value) => {
  const layerClone = (innerObject, keys) => {
    if (keys.length === 1) {
      const newObj = {};
      newObj[keys[0]] = value;
      return newObj;
    }
    const newObj = { ...innerObject };
    newObj[keys[0]] = layerClone(newObj[keys[0]], keys.slice(1));
    return newObj;
  };
  const keys = queryString.split('.');
  return layerClone(object, keys);
}
Clones the given object and modifies the variable present in the
queryString location with the given value.
@param  {Object} object      the base object used.
@param  {String} queryString the string which is used to clone the object.
@param  {Object} value       the value assigned to the last variable of the
                             query object.
@return {Object}             clone of the object with the value changed.