Fix MultiValueField

Summary of changes:

* Add test for MultiValueField
* Add support for MultiValueField widgets
* Move field modification code into a function (necessary for MultiValueField change) and clean up some code style

I can remove or modify the last two commits (84a5233 and 92dbc34) if you don't think my proposed stylistic improvements are appropriate.