Use shared memory to store the buffer control information.

With this change the client and server do not have to use the
same process memory space when checking the buffer information.
This is required for the multiprocess solution.
Make glteximage2d and gltexsubimage2d use the buffer memory.

For multiprocess we can not use mallocs to send information
from the client to the server. With this change the client gets
space in the buffer to send the texture information.
Make gltexparameterfv and gltexparameteriv use the buffer.

Now they do not need to share the same memory space to pass the
parameter.
Handle EglQueryString results using the buffer.

We need to avoid using just pointers because in the multiprocess
case there isn't this option.
Make eglChooseConfig use the buffer to return the result configs.
Make eglGetConfigAttrib use the buffer to return the visual info.
Handle eglQueryContext using the buffer to return the value.
Start the server in a different process.

This commit makes the system multiprocess, it is a one to one
communication and very earily stage, still some visual resource
issues we have to fix.
Make eglQuerySurface use the buffer to return the values.
Make eglGetString use the buffer to return the strings.
Change the generation of the client inits when memory is used.

Now every generated command using local memory is using the buffer
to pass the information to the server.
Make glShaderSource use the buffer.
Use the buffer to handle the out parameters for the generated.
Add the NULL termination to the generated allocation of the buffer.
Copy the client value also for the out parameters in the buffer.

This is required for the functions generating values in the client.
We do not need to destroy the parameters anymore in the server.
Fix glShaderSource, it needs to use a mapped shader number.
Stop the client when the server crashes.
Handle X errors to close the server and client properly.