Provide an "HTMLProducer" interface so Views can work like tags

Summary:
Currently, we have this:

  phutil_tag('div', array(), array($tag1, $tag2));

...but this:

  phutil_tag('div', array(), array($view1->render(), $view2->render());

...or, if you have a mixture of things:

  // ONLY works in AphrontView
  phutil_tag('div', array(), $this->renderSingleView(array($tag1, $tag2)));

This is unintuitive and awkward. Allow objects other than PhutilSafeHTML to render into PhutilSafeHTML, so we can drop most `render()` and `renderSingleView()` calls.

(We could make PhutilSafeHTML implement this, but I think it's a little clearer if we don't.)

Test Plan: See next diff.

Reviewers: chad, vrana

Reviewed By: chad

CC: aran

Differential Revision: https://secure.phabricator.com/D5305