Merge RootFlow into BlockFlow

RootFlow is just a tiny variant on BlockFlow, and because it's implemented in terms of BlockFlow it distorts the structure of BlockFlow. (For example, BlockFlow's methods were implemented directly on FlowContext to allow RootFlow to call them.) I've removed RootFlow, folded its behavior into BlockFlow, and given BlockFlow the structure it should have had.