Don't crash if camera is reopened or surface is recreated
This branch fixes the crash is described in #720 (closed), which can be reproduced easily by scanning a QR code and failing to connect (for example, scan a screenshot of a QR code from a device that's no longer listening). When the camera view becomes visible again after trying to connect, its surfaceCreated() callback is called again with the same surface. An IllegalStateException added in !340 (merged) causes the crash.
Closes #720 (closed)