Extract the commonality in STRS, with the help of PATTERN.
PATTERN can contain strings and symbols chosen among `star', `any', `point',
and `prefix'. They all match anything (aka ".*") but are merged differently:
`any' only grows from the left (when matching "a1b" and "a2b" it gets
completed to just "a").
`prefix' only grows from the right (when matching "a1b" and "a2b" it gets
completed to just "b").
`star' grows from both ends and is reified into a "*" (when matching "a1b"
and "a2b" it gets completed to "a*b").
`point' is like `star' except that it gets reified as the position of point
instead of being reified as a "*" character.
The underlying idea is that we should return a string which still matches
the same set of elements. (fn STRS PATTERN)