Fix bug in where filter with falsy values.

This fixes a bug in the `afterWhere`, `beforeWhere`, and `where` filters when filtering with a falsy value (e.g. `false`, `0`, `""`, ...).

Specifically, before this fix, the following did not work as expected (it wouldn't print anything):

```html
<div ng-init="points = [{x:0, y:1}, {x:2, y:4}]">
  <div ng-repeat="p in points | where:{x:0}">
    {{p}}
  </div>
</div>
```

As it is, the fix still doesn't allow filtering using `undefined` (e.g. `x in xs | where:{foo:undefined}`). We could enable this by using strict equality comparison (`object[el] === partial[el]`), but this could break existing scenarios that expect non-strict semantics. I think it's probably fine to simply not support filtering with `undefined`.

As for tests, I've updated an existing spec to test filtering with `0` instead of adding a completely new spec.