* Watcher: Add onClosed event and callback
* Update the code generators to accept the onClose callback
* Re-generate API
* Update unit tests
* Fix unit test
* Watcher fixes/improvements:
- Run Task.Yield at the beginning to make sure we're running async
- Set Watching = false before invoking OnClosed, to make sure the callers see a consistent state.
* - 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