IDL parser rewrite in Python

The parser etc. steps are:
1. lexer (blink_idl_lexer.py)
2. parser (blink_idl_parser.py), yields AST
3. build Python object (idl_definitions_builder.py)

The lexer is very simple (just tweaks base Pepper lexer).
The parser is just grammar. It is in BNF + PLY's dialect of yacc,
so the syntax looks a bit unfamiliar, but I've got detailed comments
to explain how to read it.
Most of the logic is in idl_definitions_builder.py, which converts
the AST to a Python object. It's straightforward but long.

idl_definitions.py is mostly JSON export (for verification), 
which has several Perl hacks to produce identical output.

There's also the extended attribute validation in idl_validator.py.

There is a bit of testing cruft in derived_sources.gyp and idl_compiler
(to make JSON and pickles), which I'll take out before landing.

For reference, the base (Pepper) IDL lexer + parser are:
src/tools/idl_parser/idl_lexer.py
src/tools/idl_parser/idl_parser.py
https://code.google.com/p/chromium/codesearch#chromium/src/tools/idl_parser/idl_lexer.py
https://code.google.com/p/chromium/codesearch#chromium/src/tools/idl_parser/idl_parser.py

BUG=242795

Review URL: https://chromiumcodereview.appspot.com/15801003

git-svn-id: svn://svn.chromium.org/blink/trunk@154633 bbb929c8-8fbe-4397-9dbb-9b2b20218538
RTCPeerConnection objects should have the same lifetime as Window
The spec states that:
"A Window object has a strong reference to any RTCPeerConnection objects created
from the constructor whose global object is that Window object."
Which means that RTCPC objects should never be garbage collected.

Review URL: https://chromiumcodereview.appspot.com/19256013

git-svn-id: svn://svn.chromium.org/blink/trunk@154634 bbb929c8-8fbe-4397-9dbb-9b2b20218538