1) Removed synchronized from addFrames and added a BlockingQueue instead
since our lock needs to be on the framesFromClient object rather than
the method.
2) Wrapped the contents of the entire run method in a try-finally so
that the close method is invoked properly.
3) Instantiated the FullFrameReader outside of the loop so that we can
properly prevent blocking when needed.