**Impacted versions:**
saas-14

**Steps to reproduce:**
1. create a sale order with a new product named Sprint configured as service, Track Service "Create task and create hours" and link to Internal - GAP Analysis.
2. Confirm the sale order and review
3. Add a new line for sprint in the sale order and try to save the file.

**Current behavior:**
A Odoo Server Error (Validation Error) appears "Error, a partner cannot follow twice the same object"

![image](https://cloud.githubusercontent.com/assets/7593953/23186396/9f050718-f84c-11e6-95c0-af0104c9cdc9.png)

**Expected behavior:**
I want to be able to add more lines to my confirmed sale order

**Video/Screenshot link (optional):**
https://youtu.be/ApXlPrxVISE

I think this is a critical bug. We found out this bug Feb 12, so maybe a change before that date could introduce the bug. 

If if help, I repeat the same poc in a local instance and this is the error capture in my server log
```bash
sale.order(1,).write({
    u'order_line': [[4, 1, False], [0, False, {
        u'procurement_ids': [],
        u'qty_delivered': 0,
        u'product_id': 1,
        u'product_uom': 1,
        u'sequence': 11,
        u'customer_lead': 0,
        u'price_unit': 0,
        u'product_uom_qty': 1,
        u'discount': 0,
        u'state': u'draft',
        u'qty_delivered_updateable': True,
        u'analytic_tag_ids': [],
        u'invoice_status': u'no',
        u'tax_id': [[6, False, [2]]],
        u'layout_category_id': False,
        u'name': u'Sprint'}]]})

2017-02-20 20:05:09,736 1513 INFO openerp_test odoo.sql_db: bad query:
UPDATE "mail_followers"
SET "res_model"='project.task'
WHERE id IN (29, 30) 

ERROR: duplicate key value violates unique constraint "mail_followers_mail_followers_res_partner_res_model_id_uniq"
DETAIL:  Key (res_model, res_id, partner_id)=(project.task, 16, 3) already exists.
```

addons/mail/models/mail_followers.py
index=True, required=True, ondelete='cascade',
        help='Model of the followed resource')
    res_model = fields.Char(
        'Related Document Model Name', index=True, readonly=True, related='res_model_id.model', store=True)
    res_id = fields.Integer(
        'Related Document ID', index=True, help='Id of the followed resource')
    partner_id = fields.Many2one(
        'res.partner', string='Related Partner', ondelete='cascade', index=True)
    channel_id = fields.Many2one(
        'mail.channel', string='Listener', ondelete='cascade', index=True)
    subtype_ids = fields.Many2many(
        'mail.message.subtype', string='Subtype',
        help="Message subtypes followed, meaning subtypes that will be pushed onto the user's Wall.")
    @api.model
    def _add_follower_command(self, res_model, res_ids, partner_data, channel_data, force=True):
        """ Please upate me
        :param force: if True, delete existing followers before creating new one
                      using the subtypes given in the parameters
        """
        res_model_id = self.env['ir.model']._get(res_model).id
        force_mode = force or (all(data for data in partner_data.values()) and all(data for data in channel_data.values()))
        generic = []
        specific = {}
        existing = {}  
        p_exist = {}  
        c_exist = {}  
        followers = self.sudo().search([
            '&',
            '&', ('res_model', '=', res_model), ('res_id', 'in', res_ids),
            '|', ('partner_id', 'in', partner_data.keys()), ('channel_id', 'in', channel_data.keys())])