Camera: Mark streams unpreparable when using HAL buffer management

With CameraHal buffer management enabled there is a window of
opportunity where camera clients will be able to prepare streams
that already have submitted capture requests. Depending on timing
if the client is able to trigger prepare immediately after
submitting a capture request, then CameraHal might not be able to
request a buffer quickly enough and the prepare operation will
succeed which contradicts the public API guarantees.
To avoid this, mark the requested stream as unpreparable before
sending the request over to CameraHal.

Bug: 162884320
Test: Camera CTS

Change-Id: If9678fe440a5fbf12a6b2e424b9e63dd40d91fa8
diff --git a/services/camera/libcameraservice/device3/Camera3Stream.h b/services/camera/libcameraservice/device3/Camera3Stream.h
index 3654f89..f36d2f0 100644
--- a/services/camera/libcameraservice/device3/Camera3Stream.h
+++ b/services/camera/libcameraservice/device3/Camera3Stream.h
@@ -227,6 +227,11 @@
     bool             isUnpreparable();
 
     /**
+     * Mark the stream as unpreparable.
+     */
+    void             markUnpreparable() override;
+
+    /**
      * Start stream preparation. May only be called in the CONFIGURED state,
      * when no valid buffers have yet been returned to this stream. Prepares
      * up to maxCount buffers, or the maximum number of buffers needed by the