Streaming endpoint improvements

This is primarily a clean up of the streaming endpoint handler:
* spawn separate go-routine for flushing (I admit it's not clear it will actually help that much in terms of performance but it also puts the flushing code in one place)
* adds a stop channel to fix potential leak of decoding go-routines in case of flush failures
* make the decoded event channel buffered for more parallelism, otherwise the goroutines have to synchronize for every event handover
* adds more info to logging (primarily table name and duration)

Second part is adding optional support for properties to table creation. The optional properties: attribute takes the same format input as the properties endpoint returns, to make it easy to copy table definition from one db to another.

@benbjohnson 

cc @snormore @charlescng