This issue is that `.apply(...)` and `.apply(...)(...)` can't coexist. I get compile errors like
```
[error] /Users/drapp/Depot/spray/spray-caching/src/main/scala/spray/caching/LruCache.scala:43: double definition:
[error] method apply$default$4:[V]=> scala.concurrent.duration.Duration and
[error] method apply$default$4:[V]=> scala.concurrent.duration.Duration at line 36
[error] have same type
[error]                timeToIdle: Duration = Duration.Zero)(onEvict: Future[V] ? Unit): Cache[V] = {
...
```

This was my solution. We could also ditch the fancy syntax and just have 

```
private def apply[V](maxCapacity: Int,
                       initialCapacity: Int,
                       timeToLive: Duration,
                       timeToIdle: Duration,
                       onEvict: Future[V] => Unit = EmptyEvictionHandler): Cache[V] = {
```

I'm open to other suggestions