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.
Instead we can pass in the resource, guarantee it will never be nil as long (as we don't pass nil in), and not have to do the jokes block dance.