Introduce failing system level test

This test introduces new concepts:

* Repository
* Use Case
* Post

That's a lot to introduce in one commit. We could not make all this pass in one single go. Instead we have to take it piece wise and work our way through it.