Fixes for Intel 12.1

Not sure why Intel was calling global destructors twice or why it
doesn't think "begin() == end()" is a synonym for empty(), but these
two workarounds prevent segfaults at program exit with that compiler
on Sysnet.