Changes for Qt/CE 4.3.x "SweetAndSour" release.

****************************************************************************
*                           Features                                       *
****************************************************************************

- Added QtScript

- Added cetest/QtRemote

- Added MIPS/SH4 compilation support

****************************************************************************
*                           Bug fixes                                      *
****************************************************************************

- configure.exe
   * Added c-runtime deployment options.
   * Added cetest installation option.

- qmake
   * Fixed DEPLOYMENT rule to allow recursive directory deployment.

- QProcess
   * Fixed usage of DuplicateHandle, which got implemented for CE 6.

- libpng
   * Fixed crash bug concerning strtod which exists on CE 5 by default.

- QFSFileEngine
   * Fixed bug to access file size of POSIX opened file.

- QWidget
   * Fixed maximization bug.
   * Fixed deadlock bug caused by invalid state.

- QDateTimeEdit
   * Fixed support for QT_KEYPAD_NAVIGATION

- QPixmap
   * Fixed toWinHBITMAP
   * Fixed fromWinHBITMAP
   * Fixed icon handling