Add multi-client support in camera2

Add support for multiple clients to access the same camera
using camera2 api. This is initial set of changes and includes all the
new API changes as well as implementation of opening the camera in shared mode,
new open callbacks, newly added characteristics and creating shared sesion.

After the merge of these initial changes, it will be followed by another set of changes
which will include implementation of startStreaming and stopStreaming APIs and the
capability for multiple clients to stream the camera images.

Bug:265196098
API-Coverage-Bug: 377371012
Test: Tested that a java and native client are able to open the camera
at the same time and get the required callbacks and they are able to get
the shared session configuration using newly added characteristics.
Tested the clientaccessprioritieschanged callback occur appropriately
when new client connects/disconnects.

Change-Id: I0da9b9be84c6cf176dc2dbc1da8a09700d46fd26
4 files changed