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
if callable(selection):
            from openerp import api
            selection = api.expected(api.model, selection)
        super(Selection, self).__init__(selection=selection, string=string, **kwargs)
    def _setup_regular_base(self, model):
        super(Selection, self)._setup_regular_base(model)
        assert self.selection is not None, "Field %s without selection" % self
    def _setup_related_full(self, model):
        super(Selection, self)._setup_related_full(model)
        
        field = self.related_field
        self.selection = lambda model: field._description_selection(model.env)
    def _setup_attrs(self, model, name):
        super(Selection, self)._setup_attrs(model, name)
        
        for field in reversed(resolve_mro(model, name, self._can_setup_from)):
            
            
            if 'selection' in field.args:
                self.selection = field.args['selection']
            if 'selection_add' in field.args:
                
                selection_add = field.args['selection_add']
                self.selection = OrderedDict(self.selection + selection_add).items()
    def _description_selection(self, env):