Feature/fix optional assignment
This fixes a bug in the assignment operator of Std::optional
which may invoke undefined by moving from an l-value reference. The MR also adds two related checks:
- Check that assignment does not move from l-value references.
- Check that assignment does move from r-values.