Q objects rewritten from scratch.

The new implementation doesn't lose attributes, places parentheses correctly
and only where they are needed and does proper negation.
Merge branch 'q_expressions'

Conflicts:
	sphinxit/core/lexemes.py