Store events and projections in database

- [x] Store events using Doctrine DBAL
- [x] Ensure aggregate roots can be reconstituted
- [x] Store projections using Doctrine ORM