Remove FlowState and use a proxy pattern for that state

This is a pretty big change as it causes all read taps to be wrapped by a proxy, but it does remove a big wart: the global static FlowState map.

Thoughts on this one?

@cwensel Note the ProxyTap here. I had to resort to reflection to make this work due to the .id in Taps being private. It would be nice to have this ProxyTap idea supporting in cascading so that we can attach extra information to Taps we get at runtime.
is the purpose of this to make idF available internallyk, or to somehow change/manipulate it? This matters because any change to the id won't be represented in the underlying Tap. We can just surface the info.