Generic module to compute the stock quantity available to promise

Commit 1: Main module + option to exclude incoming deliveries
===
The "quantity available to promise" is the quantity of a product that you can commit to deliver to a customer.
Depending on the business, it may depend on expected deliveries, manufacturing, expected sales, or many other parameters.
To handle this concept in a modular and configurable way, @lbellier and I add a generic module to compute the stock quantity available to promise, and a 3 pluggable implementations that users can choose from. All implementations can be used at the same time.

Code trick: function field modularity
---
By default function fields are not very modular (you need to redefine the whole field to override the method). stock_available takes care of this by making the function fields call the pool instead, so that stock_available_immediately and other future implementations need only override the function _product_available.

Changes to stock_available_immediately
---
The existing module stock_available_immediately by @guewen and @sebastienbeau is turned into the first optional implementation.
stock_available_immediately is rewritten to compute "virtual - incoming" instead of "real - outgoing", which should be mostly the same except for rounding.
The field name "immediately_usable_qty" is unchanged for compatibility, but the field is now called "Available to promise" in the views and help texts (this wording seems more widespread).

Commit 2: option to include products that can be readily manufactured
===
The module stock_available_mrp takes immediate manufacturing capability into account in the stock quantity available to promise.
We consider a product can be readily manufactured if all its direct components are available.

Commit 3: option to exclude products already proposed in sale quotations
===
The module stock_available_sale takes sale quotations into account in the stock quantity available to promise, so that sales persons don't include the same products in 2 quotations.

I didn't come across such a case, but maybe it could be a set(). I could test for "iterable" instead.