* Add interfaces for generated Kubernetes objects that can allow working with them without using concrete types. This work is needed for future shared informers / controllers components being developed
* Add metadata for plural names. This opens up a path for many generic operations as plural name is needed to construct path
* - Implement common interface across all Kubernetes elements
- Add ApiVersion, Kind and Group properties
* Add IKubernetesObject interface
* Regenerate code
* Fixup after rebase
* Fixes after rebase, make method names consistent
* Only keep WatchObjectAsync<T> in the manually-generated code
* Add a console application which can generate the various Watch methods
* Generate the Watch methods
* Use Nustache and templates to generate the watcher code
* Re-generate code