Simplified widget handling by modifying data dict in place

I've refactored so that value_from_datadict can be called cleanly for a widget superclass, with a data dict containing only the relevant keys that it's expecting. This avoids custom logic based on widget type.

Also: NullBooleanField with NullBooleanSelect widget.