Choose a better class name for PhutilMethodNotImplementedException

Summary:
If you call `$subclass->method()` and the base class provides a default implementation which throws, you get `BaseClass` in the exception message.

Instead, produce `Subclass` in this case.

Test Plan: With Application subclasses missing `getName()` implementations, got more useful exceptions (e.g., "PhabricatorPasteApplication" is missing a method, not "PhabricatorApplication").

Reviewers: joshuaspence

Reviewed By: joshuaspence

Subscribers: epriestley

Differential Revision: https://secure.phabricator.com/D10030
Fix crazystairs with non-stairlike reverse-indented lists

Summary: Ref T5102. This loop is supposed to select the first item at the minimum depth, but uses `<` rather than `<=` so it selects the last item instead.

Test Plan:
Added and ran unit tests. Viewed stairs in preview, they worked correctly.

{F181101}

Reviewers: asherkin, btrahan, chad

Reviewed By: chad

Subscribers: epriestley

Maniphest Tasks: T5102

Differential Revision: https://secure.phabricator.com/D10043
Improve text mode rendering of reverse Remarkup list staircases

Summary: Ref T5102. The text-only mode of these was a bit silly.

Test Plan: Added and executed unit tests.

Reviewers: asherkin, btrahan, chad

Reviewed By: chad

Subscribers: epriestley

Maniphest Tasks: T5102

Differential Revision: https://secure.phabricator.com/D10044
Interpret "## text"-style Markdown headers

Summary: Ref T5102. This conflicts with `#` lists, but we can resolve the ambiguity with a reasonable heuristic.

Test Plan: Added and executed unit tests.

Reviewers: asherkin, btrahan, chad

Reviewed By: chad

Subscribers: epriestley

Maniphest Tasks: T5102

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