Recurrence form field and widget overhaul

Changing the widget to use all the fields and and added tests.