Context: fix injection of Context parameters

The previous test was:
    type.isAssignableFrom(getClass())

The idea being that if the @Parameter type is FooContext, and our
context is a BarContext, then it should not be assigned. But the order
was backwards: e.g., if we had an Object @Parameter and a BarContext,
the test would pass, and the BarContext would be assigned to the Object.

However, we do not want contexts to be assigned to just *any* Object,
but only to Context @Parameters and subtypes thereof. So we update the
test as follows:
    Context.class.isAssignableFrom(type) && type.isInstance(this)

The new test first checks whether the type is a Context or subtype, and
if so, whether the context is assignment compatible with the type of the
@Parameter. The test "type.isInstance(this)" is equivalent to, but
hopefully more succinct and easier to understand than, the previous
"type.isAssignableFrom(getClass())" test.