-----------------------------------
  output API
-----------------------------------

The data we handle and output needs to be taken care of. We don't want to put
any limitation for this within the core so we have designed a output API which
allows us and others to easily develop "output drivers" which handles the data
processing.

The output drivers have complete access to the configuration file to allow them
a way to get user defined input. Eg. database access information.

!NOTE! functions that returns and integer always has the following specification:

    zero if everything went well and a non zero value that indicates an error
    that later can be identified by the output_error() function.

-- functions

output_init():

    This function is called on startup and allows the output driver to initialize
    stuff that is needed later on. Eg. loading configuration options and/or connecting
    to the database.
    
output_process():

    Is called every time a new event is triggered. The event is passed to the function
    and after that it is up to the driver to do some magic. NOTE that you are not supposed to free the memory
    for the basic reason that you don't know now how it was allocated and even if you knew, it may change and
    we are stuck with inconsistent modules.

output_error():

    Converts error numbers to actual error strings. This function is used by the core
    to display error messages from the output driver.

output_exit():

    Called when the program is exiting (For whatever reason). It allows you to clean up
    your mess. 
