refactor(*): do not rely on an object's hasOwnProperty

Closes #1944
fix(angular.equals): stricter test for key presence

Merely testing for object[key] will give incorrect results on keys
defined in Object.prototype.