Optgroup feature for select and multipleSelect Widgets

Hi,

thanks for this great form framework. I missed an option to have "optgroups" within the select widgets and therefore added an option to have them.

For now I've kept the functions to render the groups and options separate per widget, but that could be refactored later on to have a single rendering function for both.

I've also added basic tests, which also show the configuration syntax.

Would be great to get your feedback.
Cheers,
Tolleiv
Please use `is.object(choices[k])` here - `typeof null` is "object", and please always avoid `==` in any circumstances.