Fix gauge memory leak exposed by earlier change to preserve gauges after flush

The existing code to compose a gauge always appended the new gauge to a
list, even if the key was already in the list. This was unnoticed
because the gauges list was cleared on each flush. Once we stopped
clearing the gauges, the duplicate entry issue became much more
evident. Switched to a dict, similar to counters and similar to the
Etsy implementation.