symbols allows escaping of ,; and space

Also, only one layer of surrounding parentheses are removed from
ranges, so if they are doubled, one pair will remain:

symbols('x((1:3))') -> (x(1), x(2))

regex parsing was replaced with simple string parsing.