Fixes #58; moved some interfaces and classes around; allowing additional widget type factories to be registered with forms