Add "builder" support to fields

I've added support for adding "builder" to field(), since the _build_data() is very much fragile.

To be considered:
* Should we deprecated _build_data()? Or at least hide it from the documentation?
* Should we build all default values on save()? I think it makes sense, since it pre-allocate the fields in the database which would probably prevent mongodb from moving the document around on disk.