The optional model has an option to ignore optionals accessed through smart
pointer types (other than optional itself). This patch improves this feature in
two ways:
- We extend support to optionals accessed directly through the smart pointer,
like ptr->value(). Previously, support was limited to cases that went through
an intermediate field.
- We clean up the implementation by removing the option from the analysis,
leaving it only in the diagnostic phase (where it is relevant).
- Adjusts a test which was misleading in what it was testing.