Fix `no-empty-class` false negatives

This fixes several false negatives when attempting to catch empty character classes in regular expressions, like so:

var foo = /\[[]/;

A more robust approach was taken in parsing the regular expression, which loosely follows the algorithm that JSLint uses for a similar purpose.

Fixes #267