refactor storage to a separate class

moves storage to a separate MockStorage class that is only responsible for storage, while all the pipeline methods remain in MockPipeline

only in MockStorage class will need to be synchronized
`Mock` prefix in class name is confusing. Simple `Storage` is better.