Fix a rare GC finalization race in Muninn

We have to make sure that the life time of the MuninnPage instances, which override the
finalize() method, lasts beyond the last use of the pointer field. Otherwise we can get
segfaults and corrupted memory.

We do this with some dark unsafe magic hackery, that is based on the same ordering
assumptions that our backported StampedLock uses. In other words, we probably have
to revisit this when we migrate to Java 8.