Added caching support for various backends. ( Apc, File, Null )

File caches caches files to disk, this is not ideal but could be used to cache very expensive functions
Null cache will never return a value or cache anything, it is an empty implementation to prevent your application from crashing when no caching is available.