Initial file search implementation

See #1165 for discussion.

Note that while e.g. `local InfoMessage = require("ui/widget/infomessage")` isn't used yet, it'll be used for a "no files found" message. Since I probably won't have time the next few days I figured it'd be more useful to PR what I've got to collect feedback than to wait until next week.