Impacted versions:  All stable versions

Steps to reproduce:
1. Create a new mass mailing e-mail and add an unsubscribe button in that e-mail template
2. Make sure your `web.base.url` parameter is set in the format `http://www.yourwebsite.com` (without a '/' at the end)
3. Send out the mass mailing (not as a test e-mail but real e-mail!) and check the unsubscribe button in the recieved e-mail. You'll see that you get a correct unsubscribe link:
![image](https://user-images.githubusercontent.com/6352350/40048337-47f60340-5832-11e8-9f0f-b1e1bec1a085.png)
4. Go to Settings > Technical > Parameters > System Parameters and add a key `web.base.url.freeze` to make sure that your website URL won't be rewritten. Now change your `web.base.url` parameter from `http://www.yourwebsite.com` to `http://www.yourwebsite.com/`
P.S: If you copy the URL of your website in Google Chrome it always automatically adds '/' at the end of every web URL, so the `web.base.url.freeze` is only do demonstrate the same behaviour and to make sure the issue is easy reproducable.
5. Duplicate your mass mailing campagn and send this one out (not as a test e-mail but real e-mail!). You'll see that the unsubscribe link is not correctly generated:
![image](https://user-images.githubusercontent.com/6352350/40048498-b47ee7de-5832-11e8-9591-d0af3f5f38d2.png)


Current behavior: The unsubscribe button its link is not correctly generated when your `web.base.url` contains a `/` as last character. `http://www.odoo.com` would work, `http://www.odoo.com/` would not.
It is because of this line of code:
https://github.com/odoo/odoo/blob/19878d011f8abdc737b7b702c4c79632670d4b78/addons/mass_mailing/models/mail_mail.py#L102
This line of code will give an issue if the URL ends with `/` as it will do `http://yourwebsite.com` + `/'unsubscribe_from_list'`, which creates `http://yourwebsite.com//unsubscribe_from_list` instead of `http://yourwebsite.com/unsubscripe_from_list`, which then creates an unique URL

Expected behavior: both `http://yourwebsite.com` and `http://yourwebsite.com/` work for unsubscribing

addons/mass_mailing/models/mail_mail.py
base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url')
        url = urlparse.urljoin(
            base_url, 'mail/mailing/%(mailing_id)s/unsubscribe?%(params)s' % {
                'mailing_id': mail.mailing_id.id,
                'params': werkzeug.url_encode({'db': cr.dbname, 'res_id': mail.res_id, 'email': email_to})
            }
        )
        return url
    def send_get_mail_body(self, cr, uid, ids, partner=None, context=None):
        """ Override to add the tracking URL to the body and to add
        Statistic_id in shorted urls """
        
        body = super(MailMail, self).send_get_mail_body(cr, uid, ids, partner=partner, context=context)
        mail = self.browse(cr, uid, ids[0], context=context)
        if mail.mailing_id and body and mail.statistics_ids:
            for match in re.findall(URL_REGEX, mail.body_html):
                href = match[0]
                url = match[1]
                parsed = urlparse.urlparse(url, scheme='http')
                if parsed.scheme.startswith('http') and parsed.path.startswith('/r/'):
                    new_href = href.replace(url, url + '/m/' + str(mail.statistics_ids[0].id))
                    body = body.replace(href, new_href)
        
        domain = self.pool.get("ir.config_parameter").get_param(cr, uid, "web.base.url", context=context)
        base = "<base href='%s'>" % domain
        body = tools.append_content_to_html(base, body, plaintext=False, container_tag='div')
        
        def _sub_relative2absolute(match):