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

Relates to #555

`SMWSql3SmwIds` handles cache limits and generates id's while using "Random Replacement" as a method (which is less appropriate) to discard cache items.
so key should be `string|int`