Fix(filter): Filter objects with circular references

**Overview of the issue** - When filtering confronts a circular reference, it causes an infinite recursion & subsequent stack overflow. 

**Motivation for or Use Case** - As modeling libraries evolve for Angular (I've spent quite a bit of time on one myself https://github.com/FacultyCreative/ngActiveResource), circular references on related objects are likely to become more frequent. For instance, you have a post that has many comments:

```
  post.comments[0] = {body: 'great comment', post: post}
```

Currently, the `search` method calls itself on each attribute on each object in the collection being filtered. Since `post` references this particular `comment`, and the `comment` references back, the `search` method will never end.

**Angular Version(s)** - 1.2.13 (current) and before

**Browsers and Operating System** - This is a problem for all browsers

**Reproduce the error** - Test included, plus see this Fiddle: http://jsfiddle.net/S2UY6/9/

**Related issues** - I do not see the same issue reported, though users seem to have particular difficulty with circular references in the DI system and `angular.extend`. 

**Suggest a Fix** - Fix included