Refactor interface dependency resolution

This refactors simplifies dependency resolution, and makes it easier to
extend.

Specifically:
* Move file handling into idl_reader
* Move actual definition and interface merging to methods on IdlDefinitions
  and IdlInterface (in idl_definitions)

This also clarifies exactly what's going on specially:
* we tack on some extended attributes to members
* we merge implemented interfaces to the main one

Other changes:
* use next() instead of looping over a one-element list
* remove useless exceptions (specific exception classes are only useful
  if we catch them, otherwise it's no better than a string)

This is to support a separate CL:
Bindings: inherit enums and callbacks from partial interface files.
https://codereview.chromium.org/203193015/

TBR=haraken
BUG=345137

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

git-svn-id: svn://svn.chromium.org/blink/trunk@169613 bbb929c8-8fbe-4397-9dbb-9b2b20218538
Replace nextSiblingChildren() with simpler nextSibling() when equivalent

This makes the code more readable as it makes it clear we are only traversing
children. This is also a bit more efficient as nextSiblingChildren() tries to
traverse the ancestors siblings when done with the current siblings.

R=esprehn, adamk

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

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