Beyond-lifetime caching 

Extended & reworked @cellininicholas's work.

Caching-limit is now set on a class level instead of per instance, which makes more sense in my opinion.

The cleaning cache mechanism also makes sure the items that were not used recently are deleted first.
This was implemented by storing the last-used date in `DBFBProfilePictureCachePrivate` 

Also, as a side note : 
Is there a compelling reason why the whole caching/decaching/cleaning mechanism (ie. `cacheImage:` `cachedImageForURL:` and `cleanCache`) are instance methods and not class methods ? Since the cache is shared across the whole class this could be done without exposing `sharedCacheDictionary`. 

Just seems to me that this would help differentiating what is shared across the whole class and what is private to a particular instance