revert: fix(Angular.js): toKeyValue is not serializing null values

This commit contained broken tests and was not ready to be merged.

(reverted from commit 814c9847e8489809b150d3b54e9da25c1fceb581)
fix(filterFilter): correctly handle deep expression objects

Previously, trying to use a deep expression object (i.e. an object whose
properties can be objects themselves) did not work correctly.
This commit refactors `filterFilter`, making it simpler and adding support
for filtering collections of arbitrarily deep objects.

Closes #7323
Closes #9698
test(filter): test expression object with inherited properties

Related to #9984
fix(filterFilter): ignore function properties and account for inherited properties

Closes #9984
fix(filterFilter): don't match primitive sub-expressions against any prop

Basically, implement the logic detailed in the 2nd point of
https://github.com/angular/angular.js/pull/9757#issuecomment-63544399