Infer base types for lists, tuples and dicts
Add key and value type to dict type
Detect various target types for iteration