Use WeakHashMap for FlowStateMap

Should close #685 

Please add comments if it looks like FlowStateMap can leak at all with this. Note, FlowDef (and FlowState) is only used to plan, and should be totally out of the picture by the time we are on the cluster.