Create CoreDataStack to support multiple stacks

for example usable for tests. Multiple stacks are setup, one is the shared and the other stacks are little silos where we can run out tests on.