Support CDM-less virtual devices.

 - New VDMInternal#createVirtualDevice, which creates a VD with
   CDM association id = 0 and display name from the params. The
   name is required in this case (it's optional otherwise)
 - The VD is fully functional, it just doesn't have a persistent id.
 - The VD is also visible via the public VDM APIs. This is by design,
   because if any activity ever runs on such device its deviceId will
   not be the default one and the app must be able to get to that
   VirtualDevice and its capabilities.
 - Never assume that VirtualDeviceImpl#mAssociationInfo is not null

Not testable in CTS and not really flaggable. A flag disabling the new functionality will effectively crash system server when off.

Fix: 341060398
Test: manual
Flag: EXEMPT behavioural change

Change-Id: I65eca165362b0ef819d55b743de8a7780646c26e
7 files changed