Made the winedbg an external and WineLib program.
Centralized output handling (preparation for console usage).
Fixed a few debug information reading options (stabs and sym).
Started a framework to hold debugger's internal variables.

diff --git a/debugger/expr.c b/debugger/expr.c
index 298b62c..76f4f79 100644
--- a/debugger/expr.c
+++ b/debugger/expr.c
@@ -418,7 +418,7 @@
 	  break;
 	}
 #else
-      fprintf(stderr, "Function call no longer implemented\n");
+      DEBUG_Printf(DBG_CHN_MESG, "Function call no longer implemented\n");
       /* would need to set up a call to this function, and then restore the current
        * context afterwards...
        */
@@ -637,7 +637,7 @@
 	}
       break;
     default:
-      fprintf(stderr,"Unexpected expression (%d).\n", exp->type);
+      DEBUG_Printf(DBG_CHN_MESG,"Unexpected expression (%d).\n", exp->type);
       RaiseException(DEBUG_STATUS_INTERNAL_ERROR, 0, 0, NULL);
       break;
     }
@@ -656,111 +656,111 @@
   switch(exp->type)
     {
     case EXPR_TYPE_CAST:
-      fprintf(stderr, "((");
+      DEBUG_Printf(DBG_CHN_MESG, "((");
       DEBUG_PrintTypeCast(exp->un.cast.cast);
-      fprintf(stderr, ")");
+      DEBUG_Printf(DBG_CHN_MESG, ")");
       DEBUG_DisplayExpr(exp->un.cast.expr);
-      fprintf(stderr, ")");
+      DEBUG_Printf(DBG_CHN_MESG, ")");
       break;
     case EXPR_TYPE_REGISTER:
       DEBUG_PrintRegister(exp->un.rgister.reg);
       break;
     case EXPR_TYPE_US_CONST:
-      fprintf(stderr, "%ud", exp->un.u_const.value);
+      DEBUG_Printf(DBG_CHN_MESG, "%ud", exp->un.u_const.value);
       break;
     case EXPR_TYPE_CONST:
-      fprintf(stderr, "%d", exp->un.u_const.value);
+      DEBUG_Printf(DBG_CHN_MESG, "%d", exp->un.u_const.value);
       break;
     case EXPR_TYPE_STRING:
-      fprintf(stderr, "\"%s\"", exp->un.string.str); 
+      DEBUG_Printf(DBG_CHN_MESG, "\"%s\"", exp->un.string.str); 
       break;
     case EXPR_TYPE_SYMBOL:
-      fprintf(stderr, "%s" , exp->un.symbol.name);
+      DEBUG_Printf(DBG_CHN_MESG, "%s" , exp->un.symbol.name);
       break;
     case EXPR_TYPE_PSTRUCT:
       DEBUG_DisplayExpr(exp->un.structure.exp1);
-      fprintf(stderr, "->%s", exp->un.structure.element_name);
+      DEBUG_Printf(DBG_CHN_MESG, "->%s", exp->un.structure.element_name);
       break;
     case EXPR_TYPE_STRUCT:
       DEBUG_DisplayExpr(exp->un.structure.exp1);
-      fprintf(stderr, ".%s", exp->un.structure.element_name);
+      DEBUG_Printf(DBG_CHN_MESG, ".%s", exp->un.structure.element_name);
       break;
     case EXPR_TYPE_CALL:
-      fprintf(stderr, "%s(",exp->un.call.funcname);
+      DEBUG_Printf(DBG_CHN_MESG, "%s(",exp->un.call.funcname);
       for(i=0; i < exp->un.call.nargs; i++)
 	{
 	  DEBUG_DisplayExpr(exp->un.call.arg[i]);
 	  if( i != exp->un.call.nargs - 1 )
 	    {
-	      fprintf(stderr, ", ");
+	      DEBUG_Printf(DBG_CHN_MESG, ", ");
 	    }
 	}
-      fprintf(stderr, ")");
+      DEBUG_Printf(DBG_CHN_MESG, ")");
       break;
     case EXPR_TYPE_BINOP:
-      fprintf(stderr, "( ");
+      DEBUG_Printf(DBG_CHN_MESG, "( ");
       DEBUG_DisplayExpr(exp->un.binop.exp1);
       switch(exp->un.binop.binop_type)
 	{
 	case EXP_OP_ADD:
- 	  fprintf(stderr, " + ");
+ 	  DEBUG_Printf(DBG_CHN_MESG, " + ");
 	  break;
 	case EXP_OP_SUB:
- 	  fprintf(stderr, " - ");
+ 	  DEBUG_Printf(DBG_CHN_MESG, " - ");
 	  break;
 	case EXP_OP_SEG:
- 	  fprintf(stderr, ":");
+ 	  DEBUG_Printf(DBG_CHN_MESG, ":");
 	  break;
 	case EXP_OP_LOR:
- 	  fprintf(stderr, " || ");
+ 	  DEBUG_Printf(DBG_CHN_MESG, " || ");
 	  break;
 	case EXP_OP_LAND:
- 	  fprintf(stderr, " && ");
+ 	  DEBUG_Printf(DBG_CHN_MESG, " && ");
 	  break;
 	case EXP_OP_OR:
- 	  fprintf(stderr, " | ");
+ 	  DEBUG_Printf(DBG_CHN_MESG, " | ");
 	  break;
 	case EXP_OP_AND:
- 	  fprintf(stderr, " & ");
+ 	  DEBUG_Printf(DBG_CHN_MESG, " & ");
 	  break;
 	case EXP_OP_XOR:
- 	  fprintf(stderr, " ^ ");
+ 	  DEBUG_Printf(DBG_CHN_MESG, " ^ ");
  	  break;
 	case EXP_OP_EQ:
- 	  fprintf(stderr, " == ");
+ 	  DEBUG_Printf(DBG_CHN_MESG, " == ");
 	  break;
 	case EXP_OP_GT:
- 	  fprintf(stderr, " > ");
+ 	  DEBUG_Printf(DBG_CHN_MESG, " > ");
 	  break;
 	case EXP_OP_LT:
- 	  fprintf(stderr, " < ");
+ 	  DEBUG_Printf(DBG_CHN_MESG, " < ");
 	  break;
 	case EXP_OP_GE:
- 	  fprintf(stderr, " >= ");
+ 	  DEBUG_Printf(DBG_CHN_MESG, " >= ");
 	  break;
 	case EXP_OP_LE:
- 	  fprintf(stderr, " <= ");
+ 	  DEBUG_Printf(DBG_CHN_MESG, " <= ");
 	  break;
 	case EXP_OP_NE:
- 	  fprintf(stderr, " != ");
+ 	  DEBUG_Printf(DBG_CHN_MESG, " != ");
 	  break;
 	case EXP_OP_SHL:
- 	  fprintf(stderr, " << ");
+ 	  DEBUG_Printf(DBG_CHN_MESG, " << ");
 	  break;
 	case EXP_OP_SHR:
- 	  fprintf(stderr, " >> ");
+ 	  DEBUG_Printf(DBG_CHN_MESG, " >> ");
 	  break;
 	case EXP_OP_MUL:
- 	  fprintf(stderr, " * ");
+ 	  DEBUG_Printf(DBG_CHN_MESG, " * ");
 	  break;
 	case EXP_OP_DIV:
- 	  fprintf(stderr, " / ");
+ 	  DEBUG_Printf(DBG_CHN_MESG, " / ");
 	  break;
 	case EXP_OP_REM:
- 	  fprintf(stderr, " %% ");
+ 	  DEBUG_Printf(DBG_CHN_MESG, " %% ");
 	  break;
 	case EXP_OP_ARR:
- 	  fprintf(stderr, "[");
+ 	  DEBUG_Printf(DBG_CHN_MESG, "[");
 	  break;
 	default:
 	  break;
@@ -768,33 +768,33 @@
       DEBUG_DisplayExpr(exp->un.binop.exp2);
       if( exp->un.binop.binop_type == EXP_OP_ARR )
 	{
- 	  fprintf(stderr, "]");
+ 	  DEBUG_Printf(DBG_CHN_MESG, "]");
 	}
-      fprintf(stderr, " )");
+      DEBUG_Printf(DBG_CHN_MESG, " )");
       break;
     case EXPR_TYPE_UNOP:
       switch(exp->un.unop.unop_type)
 	{
 	case EXP_OP_NEG:
- 	  fprintf(stderr, "-");
+ 	  DEBUG_Printf(DBG_CHN_MESG, "-");
 	  break;
 	case EXP_OP_NOT:
-	  fprintf(stderr, "!");
+	  DEBUG_Printf(DBG_CHN_MESG, "!");
 	  break;
 	case EXP_OP_LNOT:
-	  fprintf(stderr, "~");
+	  DEBUG_Printf(DBG_CHN_MESG, "~");
  	  break;
 	case EXP_OP_DEREF:
-	  fprintf(stderr, "*");
+	  DEBUG_Printf(DBG_CHN_MESG, "*");
 	  break;
 	case EXP_OP_ADDR:
-	  fprintf(stderr, "&");
+	  DEBUG_Printf(DBG_CHN_MESG, "&");
 	  break;
 	}
       DEBUG_DisplayExpr(exp->un.unop.exp1);
       break;
     default:
-      fprintf(stderr,"Unexpected expression.\n");
+      DEBUG_Printf(DBG_CHN_MESG,"Unexpected expression.\n");
       RaiseException(DEBUG_STATUS_INTERNAL_ERROR, 0, 0, NULL);
       break;
     }
@@ -851,7 +851,7 @@
       rtn->un.unop.exp1 = DEBUG_CloneExpr(exp->un.unop.exp1);
       break;
     default:
-      fprintf(stderr,"Unexpected expression.\n");
+      DEBUG_Printf(DBG_CHN_MESG,"Unexpected expression.\n");
       RaiseException(DEBUG_STATUS_INTERNAL_ERROR, 0, 0, NULL);
       break;
     }
@@ -904,7 +904,7 @@
       DEBUG_FreeExpr(exp->un.unop.exp1);
       break;
     default:
-      fprintf(stderr,"Unexpected expression.\n");
+      DEBUG_Printf(DBG_CHN_MESG,"Unexpected expression.\n");
       RaiseException(DEBUG_STATUS_INTERNAL_ERROR, 0, 0, NULL);
       break;
     }