Use Inflector and PropertyAccess when possible

This PR allows form purposes to contain underscores.
We might consider using https://github.com/doctrine/instantiator instead of manually instantiate objects.