8.0 port sale_exceptions

I don't like this side effect of `_detect_exception`. The previous version had the side effect one level up (in `detect_exceptions`) which was not a very good design, especially with such a method name which tends to indicate "finding something"  rather than "changing state". 

Additionally, returning a column in an `@api.multi` method will cause an error if there are more than 1 record in the recordset, which is not what we want here. Since the return value here AFAIK  is only used as a truth value, a boolean should be returned, computed from a return value of `_detect_exception` (to be added back). 

A docstring mentionning the side effect would be nice too (I understand if we wish to keep the function name as it is a public API of the module).