Fixes #390 - Merging of :fullscreen rules
Fixes #390 - Exclude all problematic pseudo-classes from rule merge
Fixes #390 - Update regexes for :first and :dir()
Merge pull request #392 from silverwind/pseudo-class-merge

Exclude all problematic pseudo-classes from rule-merging
Fixes #395 - unescaped brackets in data URIs.
Tweaks EscapeStore to restore based on index not metadata.
Adds an option to store escaped metadata to CommentsProcessor.
Adds an option to store escaped metadata to ExpressionsProcessor.
Adds an option to store escaped metadata to FreeTextProcessor.
Adds an option to store escaped metadata to UrlsProcessor.
Adds more advanced tokenizing.

* We'll be able to hold more information about tokens now.
Rewrites property tokenizer to use string traversing.
Adds a more performant version of rebuilder.
Reworks simple & advanced optimisations to use metadata.

* We can avoid merging, splitting, and mapping by using token metadata directly.
* Unfortunately it means metadata has to be updated as we go.
Renames variables in advanced optimiser to match others.
Clarifies conditions in advanced processing.
Refactors advanced optimizer to get rid of functions in loops.
Moves cleaning up tokens out of tokenizer.

* Pulls out extracting logic into an utility class.
Adds line/column tracking in tokenization.
Adds source file tracking to source maps.