reduce frequency of session locking and StreamingProgressEvents (#13155)

This change introduces throttling of streaming progress events. Before
a event was fired once a buffer was filled. However as the buffer is only
4kb in size, fast uploads would trigger massive amounts of events.

This change is backwards incompatible on a logical level. Before this
change, a listener would get contentLength/4kb events, while after this
change the amount is limited to one progress event per 500ms.

Change-Id: I5da092ec4488971b8554b68b44c346057bfcc0e0