* Added user defined functions support to the expression parser.
* The stack is dynamic.
* In ALU::Eval, changed if (to <= from) to if (to < from) because eval("(") did not show any error.
* Added two parameters to the Parse() method - int* result and BOOL* success
  int result, success;
  alu->parse("1+3", &result, &success);
  if (success) print(result);

* Added class variable: m_pszCurrentFunction - name of currently executed function (or NULL)
  TODO
  This is for the build-in ExecuteFunction and GetVariableValue method to evaluate dynamically defined functions (todo)
  There will be a method called DefineFunction(string name, int numArgs, string expression).
  DefineFunction("RGB(r,g,b)", "(b<<16)|(g<<8)|r");
  alu->parse("RGB(100,200,50)", &result, &success);
  // if you return FALSE from your ExecuteFunction(), the dynamic function will be called, else your resultant will be used.

* changed error reporting: added ReportError method. It saves the error code and source character index in m_errorCode,m_errorPosition.
  Added also GetError method:
  int errorCode, characterIndex; // errorCode can be of type ALUERROR
  string *pszErrorString;
  GetError(&errorCode, &pszErrorString, &characterIndex);

* todo: remember operator, integer, variable and function name offset in the parsed string, to make bugfix easier.
  Done (srcIndex), now think about how to return it (DONE). First step: add ReportError(message, pos) method (DONE).

* todo: add OnError(code, characterIndex) virtual method