[FIX] web: destroy modal on cross click or escape

Instead of just hidding it
Otherwise, when opening a new dialog, it is considered that there is a previous opened dialog, and this can lead to refresh the record which opened the hidden/previous dialog

This is related to rev. 57b48602fb7afa5d0539e8d0caa8d1e10c3910e5
[FIX] models: in _create() and _write(), mark fields to recompute earlier

An issue occurs when a constraint is checked before computed fields are marked
for recomputation: the constraint will read the field's current value, which
may be wrong.  If the field is marked soon enough, the constraint will trigger
the recomputation and use a correct value.
[IMP] fields: do not force required=True on related fields

This may cause issues if the field is stored: non-null constraint will prevent
saving records when no value is provided.