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

openerp/fields.py
""" Placeholder for a value update; when this value is taken from the cache,
        it returns ``record[field.name] | value`` and stores it in the cache.
    """
    def __init__(self, field, record, value):
        self.args = (field, record, value)
    def get(self):
        field, record, value = self.args
        
        del record._cache[field]
        
        value = field.convert_to_cache(record[field.name] | value, record, validate=False)
        record._cache[field] = value
        return value
class _RelationalMulti(_Relational):
    """ Abstract class for relational fields *2many. """
    def _update(self, records, value):
        """ Update the cached value of ``self`` for ``records`` with ``value``. """
        for record in records:
            if self in record._cache:
                val = self.convert_to_cache(record[self.name] | value, record, validate=False)
            else:
                val = UnionUpdate(self, record, value)
            record._cache[self] = val
    def convert_to_cache(self, value, record, validate=True):