Refactor to have a reused form type

This change is inspired by Symfony Form Types. (http://symfony.com/doc/current/book/forms.html#creating-form-classes) It will also make it easier to implement the Symfony Form Component. 
+ It's a step closer to thin controllers.

Do you have feedback on it? If it seems like a good change, I'll implement it in other modules too.