refactor(angular.extend): support recursive merging (deep copy)

Support recursive merging of objects

This does not create any breaking changes