Cleanup junction repository

Move to Slick 2.0 with full test coverage (now we could assume it's works, be able to make refactoring safe).

It's break API (use two parameters instead tuples, but it could be easy solved using eta-expansion on tupled method
Previews
```
def exists(elem: (First, Second))(implicit session: Session): Boolean
```
now is 
``` 
def exists(first: First, second: Second)(implicit session: Session): Boolean
```

We could move from second to first using ```(repository.exists _).tupled()```.
As it is breaking change it should be included in next minor release. 
Also we should add it in migration guide.