Fix bug in RefreshCandidateList(). Use empty to check for null string
Fix bug. b:niffler_last_prompt wasn't being updated
Refactor filter function to use `grep` command

- Filter function was poorly structured because it alternated between
  internal and external filtering. But the external filtering wasn't
  really a filter, it was just a reconstruction of an updated file list.
- This poor structuring made it hard to reason about the code and use
  the filtering for other operations (like NifflerMRU)
- Remove all bookkeeping for internal/external filtering and vglobal
  filter limits. Unnecessary now that a sane filter is implemented.
Update buffer local prompt variables on prompt redraw
Fix bug in QuitNiffler() when alternate buf doesn't exist
Fix bug in PruneMruList() in the case of a file with no name