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 (bfd98b4 and 2f86161) if you don't think my proposed stylistic improvements are appropriate.