Add generated classnames to labels for multiple checkboxes.

The old FormHelper code would add a classname of 'selected' to a label
when the checkbox was selected. Keep this behavior in the new widget
class.
Implement FormHelper::multiCheckbox()

Add the basic method and unskip some of the existing tests.
Extract a trait for generating ID values.

This trait will make re-using the same ID logic possible in other
widgets like the multicheckbox one.
Disallow / as it can be used to do XSS.

When / is combined with /script you can do naughty things. Blacklisting
/ is a much safer option.
MultiCheckbox should use IdGeneratorTrait.

This allows it to not create duplicate ids quite so easily. It also
fixes a few tests from 2.x
Change the default value of empty to false.

After checking with 2.x code, the default value of empty was false if
the options were automagically detected but true otherwise. This feels
like an complicated to understand default that we can set to a more sane
default of false. People can opt into the empty options as with other
input types.
Unskip additional tests.

Make unskipped tests much simpler. We are really only interested in the
hidden field not being in the output.
Merge pull request #2863 from markstory/3.0-multicheckbox

3.0 multicheckbox