This commit completely changes the token storage.

First, it was impossible to kill the tokener goroutine. Now it is possible.
This will be used in future released for graceful shutdowns.

Secondly, it removes an interesting bug:

This code:

<code>

stopIntrim := make(chan bool)

go func() {
    logM("Serving old token while we wait.", TraceMessage)
    oldToken := token
RunForever:
    for {
        select {
        case tokenChan <- oldToken:
            logM("Sent token: "+oldToken, TraceMessage)
        case <-stopIntrim:
            close(stopIntrim)
            break RunForever
        }
    }
}()

...Refresh the token...

stopIntrim <- true

</code>

would fail to serve the right token IF the token channel wins the
select battle for a long time. It would never stop sending the
old value, which could potentially become stale.

This is because the select statement pseudorandomly chooses between
the two channels if they both are 'ready'. It could choose
the tokenChan send too many times in a row.

Now, the refesh and the send are two seperate goroutines and
a mutex is used to ensure the token value is safe.