routing: move `UserPassAuthenticator.cached` to `CachedUserPassAuthenticator.apply`, fixes #352

Because `UserPassAuthenticator.cached` relies on a spray-caching Cache even code not using this method
(but simply other `UserPassAuthenticator` methods like `apply` or `fromConfig`) must have spray-caching
on the classpath in order to avoid a `bad symbolic reference` compiler error.
This patch moves the `cached` method into a dedicated object thereby freeing up `UserPassAuthenticator`
from the dependency on the spray-caching module.