Add DRY support for boolean parameters

Boolean parameters are common and used several places in the codebase,
as well as in user code.  Without this change, each parameter requires a
description of true and false values, and code to recognize those
values.  That is implemented slightly differently from place to place,
leading to inconsistent behavior for users.  And anyway, it's all WET.

Instead, this concentrates the implementation in one place.  This is
easier for users (a consistent set of true/false values) and developers
(less boilerplate and easy resulting values -- Ruby's true and false,
not :true or "true" or anythign like that).
Merge remote-tracking branch 'pr/1607'