Add support for bare and multiple :not() functions in selectors

This enables parsing of `.flash:not(.error):not(.warning)` and `:not(p)`.

This entailed a huge change to the parser, but I think the parser should be a bit more robust now by not declaring `:not` a special case. :8ball: