wined3d: Improve Sampler support on 2.0 and 3.0 shaders.

- track sampler declarations and store the sampler usage in reg_maps structure
- store a fake sampler usage for 1.X shaders (defined as 2D sampler)
- re-sync glsl TEX implementation with the ARB one (no idea why they diverged..)
- use sampler type in new TEX implementation to support 2D, 3D, and Cube sampling
- change drawprim to bind pixel shader samplers

Additional improvements:
- rename texture limit to texcoord to prevent confusion
- add sampler limit, and use that for samplers - *not* the same as texcoord above
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 8b86d95..2294ad0 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -1268,9 +1268,15 @@
     char constantsF[MAX_CONST_F];           /* pixel, vertex */
     /* TODO: Integer and bool constants */
 
+    /* Semantics maps (semantic -> reg_token)
+     * Use 0 as default (bit 31 is always 1 on a valid token) */
     DWORD* semantics_in;                    /* vertex, pixel */
     DWORD* semantics_out;                   /* vertex */
 
+    /* Sampler usage tokens 
+     * Use 0 as default (bit 31 is always 1 on a valid token) */
+    DWORD samplers[MAX_SAMPLERS];
+
 } shader_reg_maps;
 
 #define SHADER_PGMSIZE 65535
@@ -1306,7 +1312,8 @@
 
 typedef struct SHADER_LIMITS {
     unsigned int temporary;
-    unsigned int texture;
+    unsigned int texcoord;
+    unsigned int sampler;
     unsigned int constant_int;
     unsigned int constant_float;
     unsigned int constant_bool;