Start implementing checkbox widget.

Basic features and attributes are working, next up is making
checked property smarter.
Expand logic to detect checked.

Since value is a primitive attribute, re-using it for checked/selected
state is a bit of a bad idea. This will probably lead to refactoring in
selectbox and radio as well.
Convert value to selected in SelectBox.

Having consistency between checkbox, select, and radio is more important
than keeping the code stable at this point.
Convert Radio to use selected instead of value.

Having consistency between components is important at this stage,
and will be important later as well. Value is harder to use as it over
laps with checkbox values.
Unset attribute instead of exclude it.
Update doc blocks and coding standards.
Use 'val' instead of 'selected'.

Selected does not map well onto input types like text or hidden. Using
val lets us not shadow the value attribute, and also mirrors jQuery so
the concept shouldn't be foreign to developers.
Merge pull request #2647 from markstory/3.0-checkbox-widget

3.0 checkbox widget