Custom cache providers (#2)

- Type-side resolving with c.inferImplicitValue
- logging when custom builder cannot be found and default one will be used