Tracking memory allocations

Tracks memory allocations and unboxes those which can be determined never escapes.