Fixing issues of nested fields.

When using nested fields, the object name of the nested fields would be
something in the lines of 'user[address]', which is fine in the HTML
name attributes, but it doesn't work when we model with angular.

  ng-model='user[address].street'

We would rather have it like

  ng-model='user.address.street'

.. making it support nested objects on the client side. We also needs it
to support indexes properly, which it now does.

This also adds the complete test suite of formtastic. Our form builder
is set as the default one, ensuring that we don't break existing
formtastic behavior with our builder.