Using Supplier instead of Callable to get objects as lazy

Because `Supplier` is the right type to get objects using lazy approach. 

Since we are using Java 7 without lambdas, we can use Guava Supplier. And when we decide to use Java 8, will too easy to migrate.

Cache is a internal feature, designed to use only in our internal code. So there is no problems  to change methods signature.