Add accept((Elem|Range(Elem,Elem))*) and not((Elem|Range(Elem,Elem))*) combinators.

+ reformat some code
add InputWindow[_]
Add ifelse combinator