SYNOPSIS
	void replace_program(string program)

DESCRIPTION
	Substitutes a program with an inherited one. This is useful if
	you consider the performance and memory consumption of the
	driver. A program which doesn't need any additional variables
	and functions (except during creation) can call
	replace_program() to increase the function-cache hit-rate of
	the driver which decreases with the number of programs in the
	system.	 Rooms are a good example for the application of this
	function, as many rooms just consist of an inherit statement
	and the configure function. Any object can call
	replace_program() but looses all extra variables and functions
	which are not defined by the inherited program.

	When replace_program() takes effect, shadowing is stopped on
	the object since 3.2@166.

	It is not possible to replace the program of an object after
	(lambda) closures have been bound to it. It is of course
	possible to first replace the program and then bind lambda
	closures to it.

	The program replacement does not take place with the call to
	the efun, but is merely scheduled to be carried out at the end
	of the backend cycle. This may cause closures to have
	references to then vanished lfuns of the object. This poses no
	problem as long as these references are never executed after
	they became invalid.
