sampler_t may now be used as a local parameter with restrictions

Such local parameters can also be used as arguments to functions
accepting sampler_t, such as read_image* or user-defined functions.

The restrictions are similar to ones previously used for sampler_t but
with a few refinements:

1) when a function with argument type sampler_t is called, the value
   originate either from a parameter, it must be a constant integer
   expression or it can be a local variable.

2) variables of type sampler_t must always be initialized when they
   are defined. The initialized must always be either a constant
   expression or refer to a parameter or a local value. (Ie. the
   same limitations as in #1.)

3) when a value of type sampler_t is used it must be used as either
   an initializer or as argument to a function accepting sampler_t.

With these limitations it is for example guaranteed that

1) a value of sampler_t cannot be mutated, as sampler_t_value = 1
   would be use different from initialization or function argument
2) the address of sampler_t-typed value is never acquired (because
   the same reason as in #1)
2.1) which guarantees that values of type sampler_t will not be put
     into a address space struct
2.2) which guarantees that they cannot be mutated by overflowing other
     values in the address space struct.