fixed versioning

version should be tracked from the stream, so we track the version when we hydrate it.  when pulling streams you should make sure that you pull the same version that you hydrated from, so you pull only up to the revision that you hydrated.  this ensures that when you are checking concurrency you actually check the right version.  

It becomes pretty necessary to have a concept of allowable concurrency once you do this though, because concurrency is highly likely and will slow you down quite a bit.