Refactor ignore handling to fix #1133

##    Refactor ignore handling (...)
    
    This uses persistent Matcher objects that can reload their content and
    provide a hash string that can be used to check if it's changed. The
    cache is local to each Matcher object instead of kept globally.

##   Move ignore handling from index recv to puller (fixes #1133)
    
    With this change we accept updates for ignored files from other devices,
    and check the ignore patterns at pull time. When we detect that the
    ignore patterns have changed we do a full check of files that we might
    now need to pull.