Issue with nesting context managers
When we nest context managers which subclip, moviepy has an issue, as the innermost context manager will close the call to ffmpeg, but the outer objects assume it's there.
__Case 1:__
```
with VideoFileClip(video_file) as v:
    with v.subclip(1,2) as s:
        pass
    v.subclip(0,2).iter_frames().next()
```
Works as the reader is reinitialized here:
https://github.com/Zulko/moviepy/blob/master/moviepy/video/io/ffmpeg_reader.py#L172


__Case 2:__
```
with VideoFileClip(video_file) as v:
    with v.subclip(1,2) as s:
        pass
    for f in v.subclip(1,2).iter_frames():
        pass
```
Returns `AttributeError: FFMPEG_VideoReader instance has no attribute 'lastread'` as it tries reading the `lastread` frame, which got deleted.

__Case 3:__
```
with VideoFileClip(video_file) as v:
    with v.subclip(1,2) as s:
        pass
    for f in v.subclip(2,3).iter_frames():
        pass
```
Returns `AttributeError: 'NoneType' object has no attribute 'stdout'` as it tries reusing the reader by skipping forward through the unneeded frame here:
https://github.com/Zulko/moviepy/blob/master/moviepy/video/io/ffmpeg_reader.py#L176

__Correct behavior in my opinion:__
Verify with an open call to ffmpeg exists and recreate it if not

diff --git a/moviepy/video/io/ffmpeg_reader.py b/moviepy/video/io/ffmpeg_reader.py
index 82e5cb1..0a26a88 100644
--- a/moviepy/video/io/ffmpeg_reader.py
+++ b/moviepy/video/io/ffmpeg_reader.py
@@ -166,10 +166,16 @@ class FFMPEG_VideoReader:
 
         pos = int(self.fps*t + 0.00001)+1
 
+        # Initialize proc if it is not open
+        if not self.proc:
+            self.initialize(t)
+            self.pos = pos
+            self.lastread = self.read_frame()
+
         if pos == self.pos:
             return self.lastread
         else:
-            if(pos < self.pos) or (pos > self.pos+100):
+            if (pos < self.pos) or (pos > self.pos + 100):
                 self.initialize(t)
                 self.pos = pos
             else:
diff --git a/tests/test_issues.py b/tests/test_issues.py
index 7296917..ebfb91e 100644
--- a/tests/test_issues.py
+++ b/tests/test_issues.py
@@ -285,7 +285,18 @@ def test_issue_636():
    with VideoFileClip("media/big_buck_bunny_0_30.webm").subclip(0,11) as video:
        with video.subclip(0,1) as subclip:
            pass
-      
+
+def test_issue_655():
+    video_file = 'media/fire2.mp4'
+    for subclip in [(0,2),(1,2),(2,3)]:
+        with VideoFileClip(video_file) as v:
+            with v.subclip(1,2) as s:
+                pass
+            next(v.subclip(*subclip).iter_frames())
+    assert True
+
+
+
 if __name__ == '__main__':
    pytest.main()
 
['tests/test_issues.py', 'moviepy/video/io/ffmpeg_reader.py']