[IMP] fields: make attribute 'default' callable
[IMP] fields: set the default value to the closest field.default or _defaults

This solves a subtle issue: in the following case, the class Bar should
override the default value set by Foo.  But in practice it was not working,
because _defaults is looked up before field.default.

    class Foo(models.Model):
        _name = 'foo'
        _columns = {
            'foo': fields.char('Foo'),
        }
        _defaults = {
            'foo': "Foo",
        }

    class Bar(models.Model):
        _inherit = 'foo'
        foo = fields.Char(default="Bar")

The change makes field.default and the model's _defaults consistent with each
other.
[IMP] fields: add assertions to check parameters (comodel_name, size, digits)
[ADD] doc: workflow doc from v7+ (saas-5)

I tried starting a better one, but the workflow code is a complete mess so I
have no idea how this thing works without significant study and testing.

Thus, not trying to write a brand new and complete doc, maybe later.
[FIX] barcode_interface: when loading widget, picking_type_id was sometime not correctly set
[IMP] fields: do not copy field objects anymore, but make new instances instead

Because of the parameter overriding mechanism implemented by fields, it is no
longer necessary to copy field objects.  It is even better to no copy them in
the case of related fields.
[IMP] fields: rename attribute 'copyable' into 'copy'
[IMP] doc: add testing reference and improve docstrings
[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.
[FIX] web: revert c1d48362d3a38606ffb99d569fdc6147dcd0c775 and consider there is a previous dialog only if isDestroyed returns False
[IMP] ir_qweb: remove the option 'only_date' introducted in cefc9ad8e3e3b0a14804da6c40bfd71e16d4175a. Now we can use widget='date' to do the same thing. That keeps the same behaviour that in the backend.

    <span t-field=model.datetime_field t-field-options="{'widget': 'date'}"/>
[FIX] packaging: include RML & xsl in manifest.in
[FIX] web: re-enable test_menu.py without the mock-menu test
Merge branch '8.0' of https://github.com/odoo/odoo into 8.0