Move MemoryState::Region into its own class, MemoryStateRegion.

Add a method to seec::cm::Value to get the MemoryStateRegion for the Value's occupied memory (naturally this should only be called for Values which are in memory).

Make LEVElideEmptyUnreferencedStrings use the array's MemoryStateRegion to check each sub string's initialization and whether it begins with a zero (terminator), greatly improving the speed of graph generation with large arrays of strings.