The String B-Tree: A New Data Structure for String Search in External Memory and its Applications