Current state store API has a bunch of problems that causes too many transient objects causing memory pressure.
- StateStore.get() returns Options which forces creation of Some/None objects for every get
- StateStore.iterator() returns tuples which forces creation of new tuple for each record returned
- StateStore.updates() requires the implementation to keep track of updates, while this is used minimally (only by Append mode in streaming aggregations). This can be totally removed.