Parse metadata lines via a formal grammar.

And a parser generator.

Refs #1996
Don't redefine function parameter as local variable.
Move function declaration out of conditional block.
Add parentheses around assignment in while().
Use more robust way to keep the timer reference alive.

Strict mode generates a warning about |timer;| being a useless
expression, which suggest that this might be optimized away at some
point (see also https://bugzil.la/640629#c9). Instead, explicitly
store the timer in the observer object.
Fix reference errors in GM_openInTab and remove GM_windowForTab.

This was broken by d2822b79eaec63ab2f8aa7646a82bdf3350a312e.
Use a formal grammar and parser generator for script metadata.

Merge of branch 'parser'

Fixes #1996
Use syntax that doesn't confuse my IDE (Eclipse/JsDev).
Update the parser to detect @noframes.

Refs #1859
When @noframes is set, only inject into top-level windows.

Fixes #1859
Do not install scripts from Sync without download URLs.

(They shouldn't be there in the first place.  But, in case.)

Fixes #2014
Delete corresponding temp files when a script source tab is closed.

Refs #2017
Remove unused error.access-violation string.

And update all translations from babelzilla.org .

Fixes #2020
Add-ons Manager: only force sort User Scripts.

Fixes #2021
Use nsIDOMWindow, not deprecated nsIDOMWindowInternal.
Merge pull request #2005 from Ventero/various_fixes

Various strict mode fixes.
Merge branch 'master' of github.com:greasemonkey/greasemonkey
Fix typo in property access for localized description.
Restore duplicate resource name check.

Refs #1996
Remove debug dump().