Replace custom form implementation with Virtus (WIP)

After thinking about #333 it's clear we're beginning to outgrow the current Form implementation. This is a first cut at using Virtus to explicitly type our attributes and avoid something like #333 again.

- [x] Fix Virtus to cast ActionController::Parameters
- [x] Stop Virtus casting `{ day: '', month: '', year: '' }` as `Date.today`