checking currentValue != null rather than hasInitialValue flag

From my debugging a lot of the issues I am hitting seem to stem from StreamProperties that have a current value but the hasInitialValue flag as false. I'm not sure why you have the flag but this change seems to fix some of the problems I am seeing.

What is the purpose of having this flag separate from the currentValue? Under what use cases does it make sense to not return the currentValue in response to `first` etc?