Add JSON and concise representation of numbers

Introduces options.format.json, options.format.renumber, and
options.format.hexadecimal.

As yet, options.format.json does not affect string literals.

options.format.json takes precedence over options.parse and disallows
options.format.hexadecimal.

options.format.hexadecimal requires options.format.renumber.

Added .gitignore for Emacs and Cover.

options.format.json represents positive infinity using the null literal as in
JSON.stringify(1e400)

options.format.json and options.format.reduce result in 4.2e+100
becoming 42e99, 42000 becoming 42e3, and 0.0042 becoming 42e-4.

Without options.format.json, options.format.reduce additionally
results in 0.0042 becoming .0042.

With options.format.hexadecimal, 1000000000001 becomes 0xe8d4a51001.

Swapped keys with values for the items key of the elements of data in
test/options.js

Put options.format.base and options.format.indent in
options.format.indent.style in test/options.js

Fixed expected being overwritten in runTest in test/options.js
Merge pull request #17 from reduce/reduce-renumber

Add JSON and concise representation of numbers
Update latest esprima.js and add bitwise precedence test
Change comment protocol. #10
Add "js" extension gaurd to compare / comment test
Add JSON and concise representation of strings

Introduces options.format.quotes and options.format.escapeless.

options.format.json takes precedence over the abovementioned options
and is meant to mimic JSON.stringify.

options.format.json results in delimiting strings with U+0022
(QUOTATION MARK), escaping U+002F (SOLIDUS), and escaping U+0000
through U+001F without resorting to hexadecimal escape sequences, \0,
and \v.

Regardless of the value of options.format.json, LINE SEPARATOR
(U+2028) and PARAGRAPH SEPARATOR (U+2029) are always escaped.

If options.format.quotes is set to 'double', it results in delimiting
strings with U+0022 (QUOTATION MARK). If it is set to 'auto', it
results in delimiting strings with a delimiter that leads to a shorter
string literal.

If options.format.escapeless is set to true, it results in escaping
only those characters that are required to be escaped.
Merge pull request #18 from reduce/reduce-strings

Add JSON and concise representation of strings
Add the ability to remove superfluous white space

Introduces options.format.compact which takes precedence over
options.base, options.indent, and options.format.indent.

Untested with comments.

Simplifies isWhiteSpace.

Removes unicodeEscape as it is not used anymore.
Fix parenthesizing function expressions

Minor spelling and formatting corrections.
Merge pull request #19 from reduce/reduce-whitespace

Add the ability to remove superfluous white space
Fix newline protocol and always add newline to single line comment.
Close #20, #21, #22
Attach all comments to top tree as 'leadingComments' when provided token array is empty
Close #23
Don't create leadingComments when comments array is empty
Add the ability to omit superfluous parentheses

Introduces options.format.parentheses.

Affects new expressions without arguments.
Use context based reducing parentheses on constructor. #24
Remove attaching allowUnparenthesizedNew option to all places. #24
Cleanup UnaryExpression generation path
Cleanup maybeBlock
Extract adding comment path in generateStatement to addCommentsToStatement
version 0.0.6-dev starts