Streaming

Converted to have the ability to output results through a stream. This avoids memory constraint issues on large polygons.

Synchronous ability still available.

Usage change: now must call .stream() or .sync()