optimize findVariable() in no-unused-vars

This is the lowest-hanging fruit - findVariable() was taking a
significant portion of the overall time due to a linear search of
all variables. The first step, with the smallest change to the
code, was to add a map of variable names to indices. Look up the
variable by name, then get it by its index in the existing list.
refactor variable name lookup into a separate function
migrate variables array to map
Merge pull request #592 from btmills/faster-find-variable

WIP: Optimize findVariable() in no-unused-vars (refs #574)
#595 add func-names rule
#595 add docs for rule func-names
Adding information about Yeomen generator

Noticed that we are missing information about Yeomen generator for new rules.
#595 fix markdown for js code blocks
#595 fix whitespace
#595 remove needless 'function Foo() {}' in tests
Merge pull request #601 from ilyavolodin/patch-1

Adding information about Yeomen generator
Include instructions for working with ESLintTester
use optionator for option parsing, not optimist

optimist is now deprecated, this commit changes option parsing
and help generation to be done with optionator.

Tests are simplified in that they now can pass in a string of arguments,
just like on the command line, instead of an array of strings.

Options are now accessible through the option's full name.
Eg. `currentOptions.help` instead of `currentOptions.h`

A lengthy comment labeled TODO is gone since it is no longer an issue
when using optionator.

The responsibility of printing the help text to the console is given to
cli.js instead of options.js, which I feel is more appropriate.
#595 fix rule message and add more tests
Merge pull request #600 from gkz/optionator

Use optionator for option parsing, not optimist - for (fixes #596)
#595 added more func-names tests
#595 improved func-names documentation
Merge pull request #599 from knunery/master

Adds func-names rule for checking function expressions have a name. (fixes #595)
New Rule: valid-jsdoc (fixes #536)
Merge pull request #598 from eslint/valid-jsdoc

New Rule: valid-jsdoc (fixes #536)