Reland r168780

r168780 was reverted in r168786 because it broke all oilpan builds.
This CL relands r168780 with the oilpan-side fix.

TBR=hashimoto

Review URL: https://codereview.chromium.org/190753008

git-svn-id: svn://svn.chromium.org/blink/trunk@168810 bbb929c8-8fbe-4397-9dbb-9b2b20218538
Cleanup Python in IDL compiler

I just noticed a few more natural Python ways of handling some slightly
ugly code (related to reviewing Yosi's CL).

* delete attributes on the IDLParser *base class*,
  instead of hiding them in the derived class.

The main OOP subtlety in the derived IDL parser is removing some unwanted
rules from the base parser.
I originally did this by hiding them on the derived class,
but this is pretty confusing (b/c override __dir__).
Simpler and clearer is to just delete the rules from the base class.
(You can't delete them in the derived class, since they live in the
base class -- that's why I was hiding them.)
(Added FIXME to upstream this.)


* defaultdict instead of setdefault for dict default values.
collections.defaultdict is clearer (makes the set call simpler),
and preferred unless you need to raise KeyError on absence,
which we don't have here.

Also allows some minor cleanup of compute_interfaces_info.

TBR=haraken
BUG=341748, 345137, 345503

Review URL: https://codereview.chromium.org/189413011

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