Objects:
 ActivationContext:
	One per session.
	Performs queries on object directories.
	Gets an amalgamated list

 ObjectDirectory:
	Normally, one per user-system tuple.
	Maintains a database of objects.
	Activates objects upon request.

 ImplementationID (pseudo):
	Uniquely identifies an implementation.

 ActivationID (pseudo):
	ImplementationID, plus whatever other contextual information is necessary
	to activate the server (hostname, OD class, etc.)

Use cases:

	Panel applet
1. User wants a new panel applet.
2. Panel asks ActivationContext->activate("impl_id")
3. AC asks ODs who has impl_id available.
4. AC looks through OD query results, looks for one that matches the requirements
   and preferences.
	(a) Narrow down list to those which match requirements.
	(b) Sort by preferences.
	(c) Choose first on list.
5. AC asks OD to activate server.
6. AC returns result.

	MateComponent component
1. User gets list of matecomponent components
	(a) Query the AC for all objects that meet requirements, sort by preferences.
2. User chooses.
3. Proceed similar to above case from step 2.

	Editor
1. App says "give me an IDL:Editor:1.0".
2. AC searches through ODs
	(a) Narrow down list to those which match requirements.
	(b) Sort by preferences.
	(c) Choose first on list.

XXX how to use defaults?
