Major rewrite of top-level code.

- replaced runTunnel with controller, which manages and monitors a set of tunnels

- always-on local proxies

- load balance port forwards across multiple simultaneous tunnels

- monitor health of tunnels; for example fail-over to new server on "ssh: rejected: administratively prohibited (open failed)" error

- reconnection busy loop when no network available (ex. close laptop); should wait for network connectivity

- pre-filter entries by capability; don't log "server does not have sufficient capabilities"

- use ContextError in more places

- server API no longer uses the HTTP proxy; it creates its own port forwards

- send session ID in SSH password payload

- pseudo-interruptible TCPConn dial for Windows
Fix SQL syntax errors
Fix dynamic query parameters
Set default tunnel pool size when config parameter is not specified
Set default port forward failure threshold when config parameter is not specified
Fix missing field initialization for TunnelConn (caused nil pointer access)
Fix edge condition: failed to stop establishing once pool was exactly full
Fix channel logic bugs in stopEstablishing
Fix build on Windows
Fix: nil pointer reference in goroutine; cleaned up code to make
references clearer
Updated README