Scrub

Let me know what you think! @mohit @jonahkagan 

(this is going to branch pr_onto because my first few commits went to master and so you wouldn't see the full PR. Once we merge this to pr_onto we can set it as master)
or you could convert strings to regexes that match word boundaries. here's a snippet from a private repo where we do this:

```coffee
    # Allow any non-letter as well as start/end of string to act as a boundary.
    boundary_set = '([^a-zA-Z]|^|$)'
    add_boundaries = (str) -> boundary_set + str + boundary_set
    patterns = _.map string_patterns, (pattern) -> new RegExp add_boundaries(pattern), 'i'
```