Let documents {attach} static files. Fixes #1019.

Until now, making static files end up in the same output directory as an article that links to them has been difficult, especially when the article's output path is generated based on metadata. This changeset introduces the `{attach}` link syntax, which works like the `{filename}` syntax, but also overrides the static file's output path with the directory of the linking document.

It also clarifies and expands the documentation on linking to internal content.
Because a set is more representative of the code's intent and logic: We just want to know if a thing is a member of a set of things. A tuple would preserve the order in which we describe the set of things, but that is unnecessary and irrelevant.

Also because python is more efficient at finding items in sets than in tuples. With a set, it can do a fast hash lookup, but with a tuple, it has to perform a comparison for each item in the tuple until it finds a match. It's even worse when the items are strings, because a string comparison is actually a sequence of byte comparisons (except maybe for certain short strings if a particular python implementation happens to have interned them).

Honestly, though, the difference doesn't matter much in this case, because we have only two possible values to test. I chose to use a set mainly out of habit, because of my first reason, above.