Avoid interior use of 'key()' setter-getter.

Instead, use '_key' directly, adding a '_must_key' property which
raises a NoKey exception if None (for use in cases which require a key).

Allows removal of the pylint 'maybe-no-member' comments.
Add tests for logic in Entity.__repr__.

Fixes #174.
Clarify docstring for 'Entity._must_key'.

Incorporates feedback from @dhermes.
Merge pull request #253 from tseaver/174-verify_entity_repr

Fix #174: verify Entity.__repr__ logic