Gen storage

Fix https://github.com/dart-gde/chrome_gen.dart/issues/23

This generates specialized types for properties that themselves declare properties. This happens in chrome.storage and chrome.privacy. We map these uber-properties to ChromeDeclaredTypes; they end up looking similar to some declarations in the IDL.

This may also address an open issue about many things taking and returning untyped maps.