lib.binary_search: cache and reuse generated variants
lib.binary_search: cache and reuse generated variants

This is to avoid leaking ctypes and memory for generated code when using
binary_search.gen() repeatedly.

eugeneia/snabb,Igalia/snabbswitch,SnabbCo/snabbswitch,alexandergall/snabbswitch,snabbco/snabb,Igalia/snabb,Igalia/snabb,alexandergall/snabbswitch,Igalia/snabb,alexandergall/snabbswitch,alexandergall/snabbswitch,Igalia/snabb,Igalia/snabb,SnabbCo/snabbswitch,eugeneia/snabb,alexandergall/snabbswitch,Igalia/snabbswitch,eugeneia/snabb,SnabbCo/snabbswitch,Igalia/snabb,eugeneia/snabb,snabbco/snabb,Igalia/snabb,Igalia/snabbswitch,alexandergall/snabbswitch,Igalia/snabbswitch,alexandergall/snabbswitch,eugeneia/snabb,Igalia/snabb,eugeneia/snabb,eugeneia/snabb,snabbco/snabb,snabbco/snabb,snabbco/snabb,snabbco/snabb,snabbco/snabb,snabbco/snabb,SnabbCo/snabbswitch,eugeneia/snabb,alexandergall/snabbswitch,Igalia/snabbswitch