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.