untested fix for #46

This replaces references to document.location.origin with calls to a
getOrigin() function.  But where do I put getOrigin() so that each of
the three different JS files has it in scope?  I don't know.  Probably
the definition in shell.js by itself is good enough, no?  But this puts
it into all three files: should work, but clearly the Wrong Thing.
untested fix for #46 slightly cleaned up
Merge pull request #48 from kragen/master

Fix #46.
Auto-assign a subdomain for web publishing apps.

This is mainly to improve the demo experience, where you probably don't want to play with your DNS settings just to see what the site will look like. Moreover, our demo server doesn't currently support mapping arbitrary domains to it, so this patch lets the app discover whether the account is a demo account so that it can display a note that domain mapping won't work, but the auto-assigned host will.
Accept relative paths to 'sandstorm update' because we generalyl don't run it through 'service' anymore.
Use 'replaceState' when redirecting after an install so that we don't break the back button. Fixes #50.
Add screenshots for some upcoming apps.
app list: Update ssjekyll link and tweak server selector.
Don't confuse an unreadable pidfile directory as meaning there is no pidfile.

The pidfile directory is by default not readable by non-members of the server group. This previously confused our code into thinking the pidfile simply didn't exist, meaning the server was not running, even if it actually was.

Also make relative-path local updates actually work (I introduced this a couple commits ago but apparently failed to test it properly).

Fixes #51. Should also improve issue #49 by at least making the error clearer.