Add InMemoryCache using LRU to replace out of range/least used cache items

`SMWSql3SmwIds` handles cache limits and generates id's while using
"Random Replacement" as a method (which is less appropriate) to discard
cache items.
Use Doctrine\Common\Cache interface definition
Add ItemByIdFinder to SMWSql3SmwIds

Adds the possibility to get a DataItem object for an Id
Rename InMemoryCache to FixedInMemoryCache
Merge pull request #562 from SemanticMediaWiki/rfc-555

Add LRU FixedInMemoryCache / ItemByIdFinder