Modify gen_build to accept keys for copying into nested directories
Move some bundles code from index.h to query.h
Rename “index.{cc,h}” to the more appropriate “item.{cc,h}”
Move fs_cache to plist framework
Move load_bundles to bundles framework
Add usernames for missing GitHub email addresses
Remove unused argument for file::path_attributes
Allow comparison of text::indent_t
Add indent accessor to document_t
Use document’s indent accessor instead of going via buffer()
Document from content now sets file type and tab settings

Presently we also set file type (and thus indirectly indent settings) when “opening” a document, but I wish to remove that code, so that one can create a document, set all desired settings, and not worry about later code overwriting these settings.
Remove unnecessary call to c_str
Setup indent settings at a higher level

We now setup the indent settings when creating untitled documents where we know the folder, so that we can use potential settings scoped to that folder.

Since the document itself no longer sets this as part of regular buffer setup, we also set it when opening a document with a path, and when changing a document’s file type, although the latter is probably temporary.

Closes #305.
fixup! Account for svn returning relative paths

Turns out the paths are relative to the current working directory, not the working copy.
Store tab size with backups
Improve lstat error message
Improve speed of stopping the document scanner

Closes #1069.
Limit use of path::identifier_t
Use std::mutex instead of OSSpinLock
Fix path/inode lookup when opening documents

The strategy is to prefer an existing document with same path and if there is none, check if there is a document with the same inode. The latter is so that links or files that have been moved, do not create duplicate documents.

The old code used a single map for the lookup, using path::identifier_t as key (wrapping path and/or inode), though since the map is ordered, the code would occasionally fail, as the keys cannot be correctly ordered (so effectively this reworked code is a fix for an incorrect path::identifier_t::operator<).

Fixes #1052.