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