Avoid unnecessary string copies in #search_files

Before this change we were making multiple copies the file contents in
memory when searching for a line matching a pattern. This change loops
through lines one at a time, giving Ruby the opportunity to GC unused
strings.
Merge branch 'search_with_less_memory' into 'master'

Search with less memory

Our code for searching in files (think `git grep`) was wasting a lot of memory
by creating multiple copies of the full file contents in memory while
searching.

Here is a 'before' trial, where we search for a small string in some large
files (280MB each), ten times in a row. After each search we print the
process's RSS.

```
$ time bundle exec ruby search.rb
 63208
1032916
1383136
1397404
1417900
1431156
1422300
1431596
1424280
1437652
1451148

real	1m54.936s
user	1m42.901s
sys	0m11.222s
```

After applying this change, the memory grows as follows:

```
$ time bundle exec ruby search.rb
 64656
409616
409652
408648
409680
408656
409712
409712
409720
409720
409720

real	1m58.277s
user	1m49.044s
sys	0m8.472s
```

See merge request !14