Adds FindBy, First, and Last to AbstractDataEntityCollection

Adds a FindBy method to the AbstractDataEntityCollection that works
similar to the filterBy method but returns a single child instead of
a collection.

Adds first and last methods to the same class that returns either the
first child or last child in the collection.

Changes NameCollection to use the new findByIsPrimary method to return
the primary name in the collection.

Updates logic in findBy and filterBy to default to using the set keys
as method names if the key is one of the classes methods. If the key is
not, then we fall back to calling it as a getter by append get_ to the
key name.

Adds new tests for the FindBy, first, and last methods added.`
Adds Poll Entities and Basic Getter Commands

Adds Poll and PollCollection Entities. Adds methods to the Boardgame
entity to either get the PollCollection or return a specific Poll by
name from the collection.

Adds similar methods to the PollCollection object to make it easier
to get named polls from the collection.

Adds related tests for the new methods.