Feature/fanout store

A store that fans out Key K to a Set of Keys, queries the appropriate underlying stores and sum the values using the Monoid V
Not familiar with the immediate use case in mind, but can/should the fanout keys be of a different type to support those cases as well?

```scala
class FanoutStore[-K, +V: Semigroup, LK, S <: ReadableStore[LK, V]](fanout: K => Set[LK],
    stores: Set[(LK => Boolean, S)])
extends ReadableStore[K, V]
```