files: add a files cache for IdeFile
This tries to reduce the number of IdeFile we will create by caching them. When creating a new file with new funcs (some code will need to be ported to use this), we lock the cache and try to return a previous entry. Another thing I'd like to cleanup (well other than possibly removing IdeFile altogether), is to drop the file-settings after some period of innactivity. We might event to only support loading them, and not keep a copy for future use.