CHANGE: BaseDocument for mongoengine doesn't auto convert params

This means that if you pass an invalid value that would normally be
coerced to the correct type in a constructor, it will no longer work.

The rationale here is to make these two methods of setting values behave
in the same way (and to prevent unexpected coercion):

m.User(field=value)

u = m.User()
field=value

This is most apparent when using Quantum/QuantumDate fields
CHANGE: implementation of QuantumDate object and mongo field (and the form date fields now use it)