Extract Store into an interface.

@xiangli-cmu @philips This extracts out the `Store` into an interface so we can start mocking it for unit tests. It's mostly straightforward. The biggest change is attaching the `*store.store` to the `Node`. I had to do that so the Node could know the specific store type and that way I didn't have to open up a bunch of the internal details of the store.