Fix symlink base path, don't allow in bare repos

Sorry to hit you with one more commit on this, but I decided the way I'd cobbled together the tests was too big of a hack.  Here's one with actual checkouts using the `cloned_testpath` helper, and including a test for the Sinatra app.  I also disabled symbolic links on bare repositories, because that's obviously the correct decision.  All of that flushed out a bug in the File class, which I squashed.  I'm officially 100% confident that this now works the way it should.

Now I promise I'm done, because I've been putting off my other work far too long this evening!  Thanks for your help, and for moving development forward on this!