Improve remarkup performance (libphutil)

Summary:
As we've moved more logic post-cache, we've started paying a higher price for it. Reorganize some bits of the rendering pipeline so we do less work.

Mostly, this just means that we don't call `setEngine()` unnecessarily 20,000 times, and don't make multiple postprocessing passes for rules in more than one block.

Test Plan: Unit tests; profiled a 75% reduction of cost in Conpherence.

Reviewers: btrahan

Reviewed By: btrahan

CC: aran

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