Make Phobject detect iteration of non-iterable objects

Summary:
See D8914 and IRC. The root issue was that this code:

  foreach ($some_object as $thing) {
    // ...
  }

...means "iterate over the public properties of the object" in PHP, and does not raise any warnings or throw an exception.

This has very nearly bitten me several times too; we //never// want to do this. Instead, throw from objects extending Phobject.

Test Plan:
  - Added and ran unit tests.
  - Tried to foreach() an arbitrary object.

Reviewers: btrahan

Reviewed By: btrahan

Subscribers: epriestley

Differential Revision: https://secure.phabricator.com/D8915
Allow Remarkup lists to have checkboxes

Summary:
Fixes T3945. This provides a convenience style for checkmark lists. They're read-only. See disucssion in T3945.

We're limited on how much we can style the checkboxes -- it would be nice to make them a little more visible, but this seems mostly OK to me. I added some hinting to the item text to make the completion state more clear.

Test Plan:
  - Added unit tests.
  - Ran unit tests.
  - Fixed a couple of existing unit test issues.

{F149711}

Reviewers: chad, btrahan

Reviewed By: btrahan

Subscribers: epriestley

Maniphest Tasks: T3945

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