decruft
speed up currentView when not in a view

Avoid reading the view log when the branch is clearly not a view branch.
pre-commit: Update metadata when committing changes to annexed files within a view.

So the user can now switch to a view and then move files around within it
to manage metadata. For example, moving a file into a new directory
when in the tags=* view adds a tag to it.

Implementation is fairly efficient. One diff-index, which is no more
expensive than the first stage of a git commit, followed by possibly
some cat-file --batch traffic to find the key (when deleting a file).
Very similar to what's done in direct mode when committing. And like
direct mode when updating the WC after a merge, it has to buffer the
diff-tree values in order to make 2 passes over them.

When not in a view, pre-commit now does one extra git symbolic-ref,
which is tiny overhead.

This commit was sponsored by Andrew Eskridge.
new section for metadata
metadata: add --tag and --untag shorthand options
add tip about metadata driven views (and more flexible view filtering)

While writing this documentation, I realized that there needed to be a way
to stay in a view like tag=* while adding a filter like tag=work that
applies to the same field.

So, there are really two ways a view can be refined. It can have a new
"field=explicitvalue" filter added to it, which does not change the
"shape" of the view, but narrows the files it shows.
Or, it can have a new view added, which adds another level of
subdirectories.

So, added a vfilter command, which takes explicit values to add to the
filter, and rejects changes that would change the shape of the view.

And, made vadd only accept changes that change the shape of the view.

And, changed the View data type slightly; now components that can match
multiple metadata values can be visible, or not visible.

This commit was sponsored by Stelian Iancu.
improve view branch name when there are a list of values
remove special case for tags in view branch names

Just having "_" for tags=* turned out to be too hard to understand.

Note that this invalidaes all current views.
Merge branch 'master' of ssh://git-annex.branchable.com
update
devblog
rename forum/copy_unused_and_unused_not_agreeing.mdwn to bugs/copy_unused_and_unused_not_agreeing.mdwn
no sense in showing all those unused files
Added a comment: indirect vs direct
there is nothing for git-annex to do to support ASIC hashing