Remove Document.Source field (YAGNI)

I really wasn't thinking when I added this field. If the Source was a
copy of the originating DocumentStore, then you would have to add a
defer doc.Source.Close() to every single Document you retrieved. That's
just awful.

Plus I kind of doubt the original use case for this field is actually
relevant. I should have YAGNId this one from the beginning. (The idea
was that, if you only had a Document, you could use the Source to pull
other Documents from the same DocumentStore. But really, when will you
have the Document and not the Store?)
Add ValidateName, remove irrelevant utils

This is the util function we really need. It tells us if a name is valid
or not, plain and simple.

I know the typical criticism of regexes (too cryptic) but they are the
simplest way to validate a string, and in as few passes as possible.
Require name validation for DocumentStore

This commit will break navigation to /w/foo/bar/ (because the trailing
slash makes that name invalid), but we can fix that in the handler.
Shorten error names

The stuttering document.DocumentFooError was getting rather annoying to
type.
Add more test output

Now you'll know if the tests against FileDocumentStore are actually
being run. By default, `go test ./...` suppresses the test output for
each individual package, so you have to pass some verbosity flags to
make sure it's displayed.