Pull state reporting changes into 1606_ox branch

Note, because the answererCountry can vary, the rollups actually need to be tracked by answererCountry.

The pseudocode is as follows:

```
type TraversalOutcome struct {
    AnswererOnline int `json:answererOnline`
    AnswererGot5Tuple int `json:answererGotFiveTuple`
    // etc.
}

outcomes := make(map[string]*TraversalOutcome)

func onTraversalOutcome(info *TraversalInfo) {
    answererCountry := info.Peer.Extras["country"]
    outcome = outcomes[answererCountry]
    if outcome == nil {
        outcome = &TraversalOutcome{}
        outcomes[answererCountry] = outcome
    }

    if info.ServerRespondedToSignaling {
       outcome.AnswererOnline += 1
    } 
    if info.ServerRespondedToSignaling {
        outcome.AnswererGot5Tuple += 1
    }
    // etc ...
}

func atReportingTime() {
    for answererCountry, outcome := range outcomes {
        // make a single post to statshub using answererCountry to populate the answererCountry dim and using outcome as the value for the "increments" field
    }
}

As traversal outcomes become available,