The Heap data structure is useful for our backoff system in addition to scheduling queue. Move it to somewhere it can be consumed by both systems and properly export needed names. Also adding unit tests from client-go/tools/cache/heap.go.