camera_metadata: Add support to generate Keys for generic types

Also adds the following keys:
* android.control.maxRegionsAe
* android.control.maxRegionsAwb
* android.control.maxRegionsAf
* android.request.maxNumOutputRaw
* android.request.maxNumOutputProc
* android.request.maxNumOutputProcStalling

Changes the following keys' type generations:
* android.control.aeTargetFpsRange (Range<Integer>)
* android.control.aeAvailableTargetFpsRanges (Range<Integer>[])
* android.control.aeCompensationRange (Range<Integer>)
* android.lens.focusRange (Range<Float>)

When trying to generate code for a generic type such as a
"Range<Float>", the generated static key initializers will now use
a TypeReference<T> instead of a T.class.

Non-generic types will proceed to use the older T.class variant.

Bug: 14628001
Change-Id: I141847dffc4b0d89cea37c19a54d6d5faf24a9bb
diff --git a/camera/docs/CameraMetadataKeys.mako b/camera/docs/CameraMetadataKeys.mako
index 27da332..7c14a1f 100644
--- a/camera/docs/CameraMetadataKeys.mako
+++ b/camera/docs/CameraMetadataKeys.mako
@@ -74,7 +74,7 @@
     @Deprecated
   % endif
     public static final Key<${jtype_boxed(entry)}> ${entry.name | jkey_identifier} =
-            new Key<${jtype_boxed(entry)}>("${entry.name}", ${jclass(entry)});
+            new Key<${jtype_boxed(entry)}>("${entry.name}", ${jkey_type_token(entry)});
 </%def>\
 ##
 ## Generate a list of only Static, Controls, or Dynamic properties.