Re-write ggtags-query-replace to be more IO-efficient

by limiting to matched files. Also re-use tags-query-replace to
provide an interruptible UI.