[IMP] website_forum: better implementation of automatic nofollow attribute
on links in forum posts.

This is now done when creating / updating posts instead of updating the display
of the post. This means that old posts may contain nofollow attribute altough
the user has sufficient karma; however it is acceptable compared to the computation
we save by avoiding processing every post to display.
[IMP] ir.attachment : move the fields index_content (from document), mimetype and datas_checksum (from website) to base. In base, the mimetype is computed with the Magic python lib (if installed, else with a custom function using magic number), and the index_content is an implementation of strings unix command. In document, index_content is still computed with the indexer of document module.
[FIX] typo in odoo.py

Fixes #4203
[IMP] mail : add compose mail button on top menu to send private emails
[FIX] number of blogs by month according to blog/tags
[IMP] website.theme: close the modal when the user click outside or press escape
[IMP] restaurant: some linting for the OCD among us
[FIX] pos_restaurant: please stop forward porting the obsolete 'restaurant' module. It has been renamed pos_restaurant
[FIX] pos_restaurant: fix bad forward porting merge
[FIX] pos_restaurant: properly merging the notes feature that allows custom notes on orderlines (Think Raw/Well-Done)
[FIX] point_of_sale: by default cash is returned on the payment method with cash control. If there is no such method, return it on the the first cash payment method
[IMP] account/sale/sale_layout: standardization of Quotation/Sale Order/Invoice printed layout + add missing information

- Column alignment and order are now uniform across those reports.
- Display Due date on invoices.
- Display payment term and fiscal positions notes.
[IMP] graph view on contacts
[FIX] sell future events only, not old ones
[IMP] website_sale : Don't show shipping address when only services are into shopping cart.
[IMP] When no stock moves, change whatever you want, otherwise no change at all for UoM.  #3440 Enhancement request richard-willowit

The default UoM can only be changed when there are no stock moves (or only cancelled ones), but to any category.
The purchase UoM can be changed whenever you want, but has to be in the same category as the default UoM.

Closes #3440

[IMP] When no stock moves, change whatever you want, otherwise no change at all for UoM.  #3440 Enhancement request richard-willowit

[FIX] Remove line

[FIX] Constraint should be applied when UoM or PO UoM is changed
[ADD] sale: option to install sale_layout from settings menu
[ADD] Add the website_links module.

This module tracks clicks in mass mailing mails and allow the generation of trackable links in a website interface.

Modules modifications
---------------------
Refractoring of the crm_tracking_* classes in a new module.

* Extract the crm_tracking_* from the crm module into a new module "utm"
* Remove the crm_mass_mailing bridge module
* New dependencies of mass_mailing and website_links to utm.
[ADD] stock: display UoM in stock quants
[IMP] base, ir_sequence: removed ir.sequence.type object, added test for ir.sequence.date_range, refactored ir.sequence and ir.sequence.date_range implementation