Bugfix: 'Problem characters' regex contained an unescaped character
PEP8 style fixes (mostly regarding whitespace)
Moved file-related classes to a dedicated package
Minor refactoring for decode_literal() function

Clarified variable names and added a sanity check.
Renamed decode_literal() to decode_baon_string_literal()

This is to make it clear that it is used in parsing literals in BAON rules, which may not necessarily have the exact format as string literals in other languages.
Unicodized + bugfixed decode_baon_string_literal()

In preparation for the Python 3 port, decode_baon_string_literal() now accepts and produces Unicode strings by design.

Also fixed a bug whereby when an invalid escape was encountered, the escape char would be omitted from the output (this is consistent with literals in some other languages but not the intended behaviour)
Moved is_quoted_string() to new str_utils module
Renamed logic.utils to logic.baon_utils
Added unit tests for is_quoted_string() and decode_baon_string_literal()
Moved qstr_to_unicode() to new qt_utils module
Added module for language utils + unit test

These will be needed shortly for another commit.
Added Qt utils for working with QColor and QTextCharFormat

RuleSyntaxHighlighter was also cleaned up as a result.
Fixed some copyright headers
Added new PLY-based lexer + unit tests
Minor changes in RulesToken interface
Switched RuleSyntaxHighlighter to new PLY-based lexer

Note that the rules are still parsed using the old lexer, so there is a slight possibility of resynchronisation between the highlighting and the syntax errors reported by full parsing.
Renamed some fields in RuleToken

This is to make its interface identical to that of the tokens emitted by lex(), which it will eventually replace.
Track line and column using the lexer's own facilities
RulesToken now completely replace lex() tokens
Refactored RulesLexer interface and usage