function initClientRendered(componentDefs, host) {
  if (!host) host = document;
  // Ensure that event handlers to handle delegating events are
  // always attached before initializing any components
  eventDelegation.___init(host);
  var len = componentDefs.length;
  var componentDef;
  var i;

  for (i = len; i--; ) {
    componentDef = componentDefs[i];
    trackComponent(componentDef);
  }

  for (i = len; i--; ) {
    componentDef = componentDefs[i];
    initComponent(componentDef, host);
  }
}
This method is used to initialized components associated with UI components
rendered in the browser. While rendering UI components a "components context"
is added to the rendering context to keep up with which components are rendered.
When ready, the components can then be initialized by walking the component tree
in the components context (nested components are initialized before ancestor components).
@param  {Array<marko-components/lib/ComponentDef>} componentDefs An array of ComponentDef instances