Return safe HTML from syntax highlighters

Summary: I wonder what the perf impact of this is.

Test Plan: None yet.

Reviewers: epriestley

Reviewed By: epriestley

CC: aran, Korvin

Differential Revision: https://secure.phabricator.com/D4873
Don't merge consecuitive list blocks

Summary: We've merged them from the initial commit, but it doesn't make much sense to do so. It makes less sense after the introduction of numeric lists.

Test Plan: Unit test.

Reviewers: brennantaylor

Reviewed By: brennantaylor

CC: aran

Differential Revision: https://secure.phabricator.com/D4912
Allow nested arrays in tag rendering

Summary: There's at least one of these in `phutil_tag()`, and tracking them down is a huge pain, and we've made a fair number of affordances for them elsewhere which can be simplified if we just allow them to work properly.

Test Plan: Unit tests. Diff rendering in `phutil_tag` no longer raises warnings over `hsprintf('...%s...', array())`.

Reviewers: vrana

Reviewed By: vrana

CC: aran

Differential Revision: https://secure.phabricator.com/D4940
Fix issue with highlighting multi-line tokens in libphutil

Summary: Broken by D4873, which accidentally discarded newlines.

Test Plan: Added unit test; made it pass.

Reviewers: vrana

Reviewed By: vrana

CC: aran

Differential Revision: https://secure.phabricator.com/D4941
Kill phutil_render_tag()

Test Plan:
  $ arc unit

Reviewers: epriestley

Reviewed By: epriestley

CC: aran, Korvin

Differential Revision: https://secure.phabricator.com/D4944
Convert Remarkup to safe HTML

Summary: This could be slow but we cache where it matters.

Test Plan:
We have quite good unit tests.
Didn't test this in Phabricator yet (neither in //master// nor //phutil_tag//).

Reviewers: epriestley

Reviewed By: epriestley

CC: aran, Korvin

Maniphest Tasks: T2432

Differential Revision: https://secure.phabricator.com/D4918
Provide optional detailed help from workflows

Summary: Acts like "synopsis" but is shown only on detailed help. If you don't want synopsii (sp?), you could just call setHelp() instead of setSynopsis(). Seem reasonable?

Test Plan: Faked some help, ran `x help`, `x help y`.

Reviewers: davidreuss

Reviewed By: davidreuss

CC: aran

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