def sub(pat, rep)
      inject(self.class.new) { |res, fn| res << fn.sub(pat, rep) }
    end
def sub(pat, rep)
      inject(self.class.new) { |res, fn| res << fn.sub(pat, rep) }
    end
Return a new FileList with the results of running +sub+ against each
 element of the original list.

 Example:
   FileList['a.c', 'b.c'].sub(/\.c$/, '.o')  => ['a.o', 'b.o']