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
simplify no-empty-class rule
Added documentation for the `no-bitwise` rule
Added documentation for the `no-caller` rule
Added documentation for the `no-eval` rule
Added documentation for the `no-new` rule
Fixing type in guard-for-in documentation
Merge pull request #269 from michaelficarra/GH-268

fixes #268: Fix `no-empty-class` false negatives
Merge pull request #271 from iancmyers/documentation

Added documentation for 4 rules
Merge pull request #273 from ilyavolodin/no-use-before-define

Rule No use before define (Closes #272)
Merge pull request #274 from ilyavolodin/documentation

Fixing typo in guard-for-in documentation
Rule: no-iterator

The `no-iterator` rule disallows the use of the `__iterator__` property. The `__iterator__` property is not supported in many browsers and should be used with caution.

Foo.prototype.__iterator__ = function() {
    return new FooIterator(this);
}

This rule matches the *iterator* rule in JS(H|L)int.
Merge pull request #275 from iancmyers/rule-no-iterator

Rule: no-iterator
Fix for `no-proto` and `no-iterator` false positive

This fixes an issue where both `no-proto` and `no-iterator` would incorrectly warn on the following code:

var foo = bar[__iterator__];

Because `__iterator__` is a variable and not a property on `bar`, there should be no warning.

This issue was raised with this comment: https://github.com/nzakas/eslint/pull/275#issuecomment-23296294
Merge pull request #276 from iancmyers/fix-proto-iterator

Fix for `no-proto` and `no-iterator` false positive
Fixing no use before define issues