Example implementation for the mixin can be found in module
test_base_time_window.

As a time window will always be linked to a related model thourgh a M2o
relation, when defining the new model inheriting the mixin, one should
pay attention to the following points in order to have the overlapping
check work properly:

- Define class property \`\_overlap_check_field\`: This must state the
  M2o field to use for the to check of overlapping time window records
  linked to a specific record of the related model.
- Add the M2o field to the related model in the \`api.constrains\`:

For example:

``` python
class PartnerTimeWindow(models.Model):
    _name = 'partner.time.window'
    _inherit = 'time.window.mixin'

    partner_id = fields.Many2one(
        res.partner', required=True, index=True, ondelete='cascade'
    )

    _overlap_check_field = 'partner_id'

    @api.constrains('partner_id')
    def check_window_no_overlaps(self):
        return super().check_window_no_overlaps()
```
