Merges property values from object 2 to object 1 where possible (where property is writable or has getters and setters).
@function module:sjl.mergeOnProps
@param obj1 {Object}
@param obj2 {Object}
@param deep {Boolean} - Optional.  Default `false`.
@returns {Object} - Passed in object at param 1.
function mergeOnProps (obj1, obj2, deep) {
        deep = isBoolean(deep) ? deep : false;
        Object.keys(obj1).forEach(function (key) {
            if (!obj2.hasOwnProperty(key)) {
                return;
            }
            extendMulti(deep, obj1[key], obj2[key]);
        });
        return obj1;
    }