fix(equals): {} and [] should not be considered equivalent 

angular.equals was returning inconsistent values for the comparison between
{} and []:

    angular.equals({}, []) // true
    angular.equals([], {}) // false

Since these object are not of the same type, they should not be considered
equivalent.

Fixes #2851