[nullsafe][refactor] Split a tricky function with side effect into two
[nullsafe][refactor] Split a tricky function with side effect into two

Summary:
This function is converting exp to pvar AND sometimes modifies a
typestate (even when ~is_assignment is false, which is something one
would not expect!).

We aim to reduce cases when it is not needed.

This diff splits the function into two: good and evil, and uses good
when it is a no-op.

Reviewed By: ngorogiannis

Differential Revision: D20284301

fbshipit-source-id: 0e5d65a65

facebook/infer,jvillard/infer,jvillard/infer,facebook/infer,jvillard/infer,facebook/infer,jvillard/infer,jvillard/infer,jvillard/infer,facebook/infer,facebook/infer,facebook/infer,facebook/infer,jvillard/infer