WL#3859: Plug-in Service API

Affects: Server-Prototype Only   —   Status: Un-Assigned

Sometimes plugins need to invoke some functionality implemented in the server.
They cannot simply call a function by its name - it will not work on Windows (a
limitation of dynamic linker), and it bypasses versioning checks in the plugin
API (which could easily cause a crash).

We need to have an API that:

1. Allow plug-ins to call code inside the server.

2. portable, works on Windows

3. safe, a plugin built expecting a certain interface in the server should not
   misbehave if server cannot provide this interface (simple example - function
   prototype in the server changes)

4. easy to use, plugin authors should spend as little time as possible
   implementing its requirements

5. flexible, a plugin may support several interfaces and could decide to chose
   which one to use depending on what the server can provide

6. plugins should be able to expose their functionality to another  plugins 
(and
   the server?) in a similar fashion

This WL will provide all that.

REFERENCES
==========

[1] *Plug-in system code for Windows.*
    Available at http://www.codeproject.com/dll/PluginSystem.asp

[2] WL#3653 Loadable Engines on Windows