create basis for flows

A flow is a series of connected flow objects that come from a Spout that is attached to a Source. The Source must be part of a FlowMap. The FlowMap is an protocol that defines how Flows are updated on a particular network. Each Flow object can update a node in the flow map through an exposed interface in the map.