Win32 Specific options

In order to enable the following options within SpeexDSP, you will need to manually edit the project options for the appropriate VC configuration.  These macros can be specified by adding them as "Preprocessor Definitions" under the appropriate Configuration's project options.  If you don't know how to do this, please check your Visual C documentation.

Feature:

Intel Streaming SIMD Extensions - SSE - macro: USE_SSE
Fixed point - macro: FIXED_POINT
Epic 48 - macro: EPIC_48K

Note: USE_SSE and FIXED_POINT are mutually exclusive.
