only add current user as admin if no other admin users

handles case where admin could be loaded from db
Merge pull request #60 from minrk/master

only add current user as admin if no other admin users
adjustments to Spawner.stop

- call start/stop_polling outside Spawner
  (avoids need for custom spawners to reimplement)
- don't clear state when stopping Spawner
  (should enable spawners to resume)
remove Spawner.fromJSON

load state on `__init__` instead

Makes more sense now that state can persist
across server instances (e.g. docker container_id)
use debug logging during testing
Merge pull request #62 from minrk/shutdown-state

adjustments to Spawner.stop
wait for HTTP servers to start accepting requests

avoids error messages in the proxy when servers are slow to start.
catch OSError/socket.error waiting for HTTPErrors

catches ECONNREFUSED
Merge pull request #63 from minrk/wait-http

wait for HTTP servers to start accepting requests
fix inappropriate clearing of API tokens
use six instead of IPython.py3compat
Merge pull request #64 from minrk/api-token

fix inappropriate clearing of API tokens
test --generate-config
better message on OSError due to missing bower/less
Merge pull request #67 from minrk/check-for-bower

better message on OSError due to missing bower/less
Merge pull request #65 from minrk/six

use six instead of IPython.py3compat
use `sudo kill` for signaling when subprocesses are started with sudo

In order for this to work, add to `/etc/sudoers`:

    HUB_USER ALL=(JUPYTER_USERS) NOPASSWD:/bin/kill
better error messages on failed db connection

check for file existence and write access
s/singleuserapp/singleuser
Merge pull request #70 from minrk/db-fail-init

better error messages on failed db connection