--[=[
	An event emitter that emits the instance that was actually created. This is
	useful for a variety of things.

	Using this to track an instance

	```lua
	local currentCamera = Blend.State()

	return Blend.New "ViewportFrame" {
		CurrentCamera = currentCamera;
		[Blend.Children] = {
			self._current;
			Blend.New "Camera" {
				[Blend.Instance] = currentCamera;
			};
		};
	};
	```

	Note that since 6.14 you should also be able to just use the reification scheme of
	[Blend.Children] implicitly in [Blend.mount] to get somewhat equivalent behavior.

	```lua
	Blend.mount(frame, {
		-- Array indexed methods get treated as children-constructors, which get the parent
		-- in them;

		function(parent)
			print("Got parent!", parent)
		end;
	})
	```

	You can also use this to execute code against an instance.

	```lua
	return Blend.New "Frame" {
		[Blend.Instance] = function(frame)
			print("We got a new frame!")
		end;
	};
	```

	Note that if you subscribe twice to the resulting observable, the internal function
	will execute twice.

	@param parent Instance
	@return Observable<Instance>
]=]

function Blend.Instance(parent)
	return Observable.new(function(sub)
		sub:Fire(parent)
	end)
end
