eina_cxx: Fix compatibility between eina::optionals of convertible types
Now an eina::optional that wraps a specific type can be constructed or
have content assigned to it using another eina::optional that wraps a
different type, provided that the two wrapped types are convertible
between each other.
Added "disengage" member function to be able to disengage a R-value
eina::optional of different contained type.
It also adds for increased convenience.
Fix constructing an engaged eina::optional from an disengaged one.
Fix small assertion problem of trying to construct an eina::optional
already flagged as engaged.
Fix incorrect use of std::move. Changed it to std::forward.
Added constexpr property for trivial constructors.
Added auxiliary function "make_optional".
Added unit test to check compatibility between eina::optionals of
convertible types.