funnel updates to _paths through a setter in RecentFilesMenu

This extends the `.distinct` and `.take(maxEntries)` behavior to paths
loaded from the preference store (new tests for that) and also gives us
a centralized place to do some potential validation on path names.
add convenience function to RecentFilesTests
add maxEntryLength to RecentFilesMenu
trim long paths for display in RecentFilesMenu

Chosen max length of 100 is somewhat arbitrary. I tried to strike a balance
between displaying as much information as possible and not mess up the
screen with a gigantic submenu.

This is just for display anyway real path is preserved, as long as it's shorter
than `RecentFiles.maxEntryLength` (currently 4096).