--------------
* [base] Refactoring to allow Negotiators, Controllers and Agents to have UFuns. Introduced the Rational type wich is a NamedObject with a ufun. Now Negotiators, Controllers, and Agents are all Rational types. This makes it easier to define ufuns for any of these objects.
on_ufun_changed is now called immediately when the ufun is set but if an AMI is not found, the _ufun_modified flag is set and the rational object is responsible of calling on_ufun_changed after the nmi is defined. For Negotiators, this happen automatically
* [situated] Making negotiation requests with an empty output-space fail
* [testing] Correcting some testing edge casease
* [base] converting outcome_type in UtilityFunction to a property. To allow complex ufuns to set the outcome_type of their children
recursively.
* [docs]. Using "Outocme" instead of Outcome for type hints. To avoid the nonsensical long types that were appearing in the
documentation because Sphinx cannot find the Outcome type alias and
rolls it to a long Union[.....] thing.
* [docs] documentation update