Parsoid/Todo:PHP parser integration

Extension expansion
Most extensions don't depend on order and frame state, so can be expanded in parallel and out-of-order.

The following extensions depend on the frame state :
 * Arrays (frame->expand, shared state so order-dependent)
 * Carp (debugging extension, low-level frame access)
 * CreatePage (frame->expand)
 * Description2 (frame->expand)
 * ExtTab / ET_ParserFunction (frame->expand)
 * FacebookOpenGraph (parser->replaceVariables, parser->recursiveTagParse)
 * GeoData (frame->expand)
 * HTMLTags (parser->replaceVariables)
 * HashTables (frame->expand, frame->getArguments, order-dependent)
 * LabeledSectionTransclusion (frame->expand)
 * Loops (frame->expand, frame->getArgument, order/nesting-dependent)
 * PageInCat (frame->expand)
 * Poem (parser->recursiveTagParse)
 * RSS (parser->recursiveTagParse)
 * SelectTag (parser->recursiveTagParse)

These depend on the frame state, but are run from the preprocessor only:
 * ParserFun (frame->expand, frame stack access, ...)
 * ParserFunctions (frame->expand etc)
 * RegexFun (low-level frame access)
 * ReplaceSet (frame->expand)
 * Scribunto (frame->getArguments)
 * SemanticForms (frame->expand)
 * SemanticMediawiki (frame->expand etc, not 100% sure if it registers tags too)