I wonder if we should add a file::each_line that takes a function<bool(string const&)> and just passes you each line in the file for you to examine (returning false to break out).  I know we do a file::read in resolvers I've already implemented, but in retrospect it's probably not the greatest idea to read entire files into memory if we can avoid doing so.  We could also remove the (?m) specifier in that case.