[IMP] point_of_sale: add an error sound to the error popups
[IMP] point_of_sale: a little explaination of how the barcode pattern system works
[IMP] point_of_sale: improved rendering speed of the partner list
[FIX] point_of_sale: order invoicing was broken
[FIX] point_of_sale: it was impossible to delete a pos session
[IMP] point_of_sale: show traceback popup when there is a server error when posting orders (which should NEVER happen !)
[IMP] point_of_sale: add debug popup that displays unsent order data, for when localStorage is hard to inspect

Conflicts:
	addons/point_of_sale/static/src/js/widgets.js
[IMP] point_of_sale: add a debug option to delete all unsent orders
[IMP] point_of_sale: add a basic UI unit test based on the new 'Tour' module
[IMP] point_of_sale: forgot changes in this file in the previous commit that introduced unit tests
[IMP] point_of_sale: tests work better when they are loaded and run by the unit test system!
[IMP] point_of_sale: made the server data loading more modular for easier development of point_of_sale extensions
[IMP] point_of_sale: report errors when loading the point of sale with a traceback and a nice popup
[IMP] pos_discount: a new pos extension that allows you to quickly give a global discount on the current order
[IMP] point_of_sale: allow an order to remember what screen it was on, instead
of switching back to default screen.

This is used by the soon to be merged restaurant addon to create new orders
and display them at a particular screen.  However, this behaviour is more
confusing in the other cases, so I'll think of a better way to solve this.
[FIX] point_of_sale: removed useless console.log()
[IMP] restaurant: a module that extends the point of sale with restaurant features
[IMP] restaurant: discard kitchen order changes when splitting the bill.
[FIX] point_of_sale: partner list rendering was not refreshing correctly. + limited display to 1000 partners for performance reasons
[IMP] fields: add mechanism to extend a selection field

If a selection field is defined by a list as selection, such as:

    state = fields.Selection([('a', 'A'), ('b', 'B')])

one can extend it by inheritance by redefining the field, as:

    state = fields.Selection(selection_add=[('c', 'C')])

The result is that the selection field will have the list
[('a', 'A'), ('b', 'B'), ('c', 'C')] as selection.