make TTL work

fixes #1068 

It lacks tests, but is able to work well.
i wanna get some feedback for this implementation, and I am adding tests for it now.
I would just leave the comment at:

"SoftState will be nil if there is no update. It is not required to consume or store SoftState".