Enhancements: no garbage collection, 2-lock queue

All erlang terms are paired with their own env when inserted into
the queue. This is a bit heavier, but gets rid of the need for
garbage collection *and* reduces the length of critical sections.
Switching to a 2-lock queue adds lock granularity.