Add V4L2 Format Metadata Factory.

This factory queries the device for the properties detailing
what formats it supports. Since this may fail, Metadata/V4L2Metadata
was moved from the weird inheritance/constructor stuff it was doing
to Metadata having a better constructor and V4L2Metadata being a
factory.

BUG: 30140438
TEST: unit tests pass

Change-Id: Id4bcb27fbd8b517e3a9a8e9fb8a984af139254b3
diff --git a/modules/camera/3_4/metadata/property.h b/modules/camera/3_4/metadata/property.h
index 1ddd20f..3ded4c4 100644
--- a/modules/camera/3_4/metadata/property.h
+++ b/modules/camera/3_4/metadata/property.h
@@ -27,7 +27,7 @@
 template <typename T>
 class Property : public PartialMetadataInterface {
  public:
-  Property(int32_t tag, T value) : tag_(tag), value_(value){};
+  Property(int32_t tag, T value) : tag_(tag), value_(std::move(value)){};
 
   virtual std::vector<int32_t> StaticTags() const override { return {tag_}; };