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

super(Many2one, self)._setup_attrs(model, name)
        
        if not self.delegate:
            self.delegate = name in model._inherits.values()
    _column_ondelete = property(attrgetter('ondelete'))
    _column_auto_join = property(attrgetter('auto_join'))
    def _update(self, records, value):
        """ Update the cached value of ``self`` for ``records`` with ``value``.
        This is used to reflect the assignment ``value[name] = records``, where
        ``name`` is the inverse field of ``self``.
        """
        records._cache[self] = self.convert_to_cache(value, records, validate=False)
    def convert_to_cache(self, value, record, validate=True):
        
        def process(ids):
            return record._prefetch[self.comodel_name].update(ids) or ids
        if type(value) in IdType:
            return process((value,))
        elif isinstance(value, BaseModel):
            if not validate or (value._name == self.comodel_name and len(value) <= 1):
                return process(value._ids)
            raise ValueError("Wrong value for %s: %r" % (self, value))
        elif isinstance(value, tuple):
            return process((value[0],))
        elif isinstance(value, dict):
            return process(record.env[self.comodel_name].new(value)._ids)
        else:
            return ()
    def convert_to_record(self, value, record):