Add behaviour control for nil field value handling
Add behaviour control for nil field value handling

Add concept of a WMI Client which allows the consumer to control how nil values are handled.

By default this maintains compatibility with the original implementation which:
* Only allows nil values for pointer field types
* Converts nil pointer values to the types zero value

Creating a custom client allows the configuration of how:
* Pointer fields handle nil values (PtrNil)
* None pointer fields handle nil values (NonePtrZero)

nelsh/wmi,stevenh/wmi,StackExchange/wmi,multiplay/wmi