FELIX-4011 use a final ComponentContext since it now has useful state (later made non-final again) and make ComponentInstance a separate class