Add StaticInstanceMixin; replace SafeNullMixin

StaticInstanceMixin is a general mixin for creating a single
static instance of the proxy type. This replaces SafeNullMixin
which was very similar. This (using the thread static option)
is needed to fix a threading issue with ComputeMethodMixin.
Fix thread issue with GetMethodIndex

Since the proxy created by ComputeMethodIndexMixin uses state
to compute the method index, it was subject to returning the
wrong value if used from more than one thread.  MethodIndexFactory
now combines this with a thread static StaticInstanceMixin so
that each thread gets its own instance.  Access via the property
was slow, so a static access func was added to StaticInstanceMixin
Improve MethodExists performance with exemplar

Added overloads to ISubjectMethodExists<T> to allow a direct
query with an exemplar.  Since T is known it can load the thread
static instance of the ComputeMethodIndexMixin and get the index
internally.  This gave just over a 2x performance increase.