Change FiniteCache to LRUCache (to fix critical bug)

FiniteCache has a bug where adding a few items to it and calling finite_cache.items() would makes it loop forever (I got it because when under a debugger it'd halt forever when trying to inspect a GraphicsItem).

So, changed it for an implementation which should be faster for the current use case and which doesn't have this bug.