Handle booleans that are strings in APIs

Coerces string values to a boolean only when the prop is given a
type=BoolStr. BoolStr only accepts string words, no shortened values,
synonyms or integer values. When no acceptable value is found a
TypeError or ValueError is raised. Setters and Constructor calls
validate the attribute value as a fail-fast behavior.

Change-Id: I382426325522227a83ec5234c5116da97e71cfa2
Closes-Bug: #1365724
Merge "Handle booleans that are strings in APIs"