Define serialization behavior for the FrameSet class, to make it smaller

When serializing the FrameSet, the internal data structures are also serialized. This means if you serialize FrameSets that are 5000 frames long, you will get serialized data that includes the unrolled list and set structures. The FrameSet class could have __getstate__ and __setstate__ methods defined to only return the frame range string as the state data. This would make the serialized form of the object very small. It would, however, mean that de-serializing the object requires a parsing of the range. But this would be equal to the cost of instantiating the object anyways.