[Performance] Improve Save/Check on Focus-in/Focus-out

This commit changes the way the IO operations are done and improves some memory usage.
Start on the premise that all the files are going to end up in the Lists, so we don't reallocate everytime.
Also, don't use FileInfo, as that will eagerly evaluate all of its properties.
Also, don't use extra File.Exists, as we know from the documentation that non-existent files will return DateTime(1601, 1, 1).

Possibly use that instead of DateTime.MinValue?
[Performance] Add a List constructor override for WorkspaceItemCollection

This commit adds a constructor for WorkspaceItemCollection which takes a list that's supplied as a parameter. This way, we can control the list size and not have it resize every time.
I picked 256 as a decent value. Probably it can be less, but it speeds things up.