Impacted versions:10

Steps to reproduce:
Following the code in https://www.odoo.com/documentation/10.0/api_integration.html both in a fresh install and against 'https://demo.odoo.com/start' trows a type error

Current behavior:
Now I get an error when executing:

```
ids = models.execute_kw(db, uid, password,  'res.partner', 'search',
    [[['is_company', '=', True], ['customer', '=', True]]],
    {'limit': 1})
[record] = models.execute_kw(db, uid, password,
    'res.partner', 'read', [ids])
# count the number of fields fetched by default
len(record)
```

In particular it seems to be a type error (cannot marshal class odoo.tools.float_utils.float_precision)

Expected behavior:
I would expect it to behave as in the documentation

""" Return the list of successively overridden values of attribute ``name``
        in mro order on ``model`` that satisfy ``predicate``.
    """
    result = []
    for cls in type(model).__mro__:
        if name in cls.__dict__:
            value = cls.__dict__[name]
            if not predicate(value):
                break
            result.append(value)
    return result
def default_new_to_new(field, value):
    """ Convert the new-API default ``value`` to a callable. """
    return value if callable(value) else lambda model: value
def default_new_to_old(field, value):
    """ Convert the new-API default ``value`` to the old API. """
    if callable(value):
        from openerp import api
        return api.model(lambda model: field.convert_to_write(value(model), model))
    else:
        return value
def default_old_to_new(field, value):
    """ Convert the old-API default ``value`` to the new API. """
    if callable(value):
        return lambda model: value(model._model, model._cr, model._uid, model._context)
    else:
        return lambda model: value
def default_old_to_old(field, value):