This adds a whole bunch of polymorphism to the forms library, and opens
up a monad approach which exposes the FieldInfos generated. This allows
you to layout your form however you want without mucking around with
guessing the location of the fieldinfos in a list.