added forward/reverse only inference flags
removing resolve returning type - its messy because we could avoid storing it properly. bounce from functional to OOPy style. the resolve process is fundementally mutative, 'fill in gaps inplace'
resolving refactor in progress. Intention is: pass nodes in where possible. resolve calls can set invalid flag directly
refactoring propogate_type, rename to distinguish passing type refs. 2 possibilites. move *everythign* to work like that, or remove it. the advantage is passing a node for error, & the node whos 'resolved flag' should be updated