Feature/for event refactor

- DomainEventPublisherを同期型(`scala.util.Try`)と非同期(`scala.concurrent.Future`)の両方に対応させるために、RepositoryトレイトはM[R]を返すように修正した。MとはTry, Futureなどのモナド型を想定している高階型。つまり、Repositoryトレイトは、同期型や非同期型の概念を抽象化したトレイトです。

- 従来のRepository型はSyncRepositoryに、RepositoryはSyncRepository, AsyncRepositoryの上位型となる。これに伴い、`AsyncRepository#resolve(id: ID)(implicit executor: ExecutionContext)`は`AsyncRepository#resolve(id: ID)`に統一化される。executorはリポジトリのコンストラクタで暗黙的パラメータとして受け取ることとなる。