Fix #174: verify Entity.__repr__ logic

This PR also removes use of the 'Entity.key()' getter/setter inside Entity methods, replacing with either the bare '_key' attribute, or a new '_must_key' property, and removes the pylint 'maybe-no-member' toggles.

Rework of #252.
Yes, it's certainly a matter of taste. It's just the name `_must_key` wasn't immediately clear to me. After a second look I think my suggestion `_key_required` also isn't clear.

I suppose since it's an internal we should just document it well and move on.

Can you update the docstring to say
> Return our key or throw exception if it isn't set.