Refactor Custom Element callback dispatching.

r164737 made HTML Imports affect the order of Custom Element
processing. This does some follow-up refactoring:

- Separates things that happen at microtask checkpoints (which
  includes HTML Import processing) and on the Custom Element
  processing stack (which doesn't do anything with HTML Imports.)

- Simplifies stuff: CustomElementCallbackQueue encapsulates its
  element again. CustomElementMicrotaskImportStep (was
  CustomElementPendingImport) no longer has a pointer to the
  import. All CustomElementMicrotaskSteps (was
  CustomElementBaseElementQueueItem) are born and die in the same
  place. Work queues are populated by the scheduler and drained by
  dispatching, there's no "remove" methods. Instead of inheritance
  (CustomElementCallbackQueue extends
  CustomElementBaseElementQueueItem), composition
  (CustomElementMicrotaskElementStep uses a
  CustomElementCallbackQueue).

- Adds some assertions about the state of imports and dispatching at
  key points.

- Removes some accumulated cruft, like
  CustomElementScheduler::scheduleInCurrentElementQueue.

BUG=313384

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

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