Utility class used to set NMS properties via introspection for IMessage derived
instances. This class allows IMessage classes to define Message specific properties
that can be accessed using the standard property get / set semantics.
This is especially useful for NMSX type properties which can vary by provider and
are obtianed via a call to IConnectionMetaData.NMSXPropertyNames. The client can
set the properties on an IMessage instance without a direct cast to the providers
specific Message types.
Properties accessed in this way are treated as NMS Message headers which are never
read-only therefore there is no exception thrown if the message itself is in the
read-only property mode.