fixed memory leak in region_map

when a list of pushed regions had two regions associated
with the same key and region_map_apply was called, then
the apply process which builds the avl tree of keys
mapping to regions would overwrite the previous region associated
with a key (if it existed). this means that region struct would
never get freed. now we simply reuse the already allocated region
struct by overwriting the values in it.