add log command, new pilot_server
modify python to add server_state in server_autogen.c
implement checkpoint egl/gl call order list.

A checkpoint is an indication of the order of gl/egl calls
from different threads (in the future from different processes).
The server keeps a queue of checkpoints.  The client generates
a checkpoint log message when it encounters egl/gl calls that
must be kept in the order.  These include create display/surface/
context, destroy display/surface/context, make current, any
flush/finish, (un)binding surface to image/texture.

When a client encounters such calls, it first send a log message to
the server.  The server then puts it the queue.  The client then
sends the the call through command buffer.  When the server
receives from the command buffer, it checks whether this command
matches the head of the queue.  If it does not match, the server waits,
otherwise, it removes the queue head and proceeds.
we need to create a new display in case app passes EGL_DEFAULT_DISPLAY
remove generate timestamp

We don't need to generate timestamp, we only need call to be in
right order
add eglQueryXXX APIs to be logged
fix in python
Fix return in the wrong place
remove checking extension during eglGetProc.

We cannot call glGetString during eglGetProc because that is moment,
the gl state machine may be NONE.
lock during dispatch table initialization on server
on server, we need to update read command before advance tail in
ring buffer
fix bug in loop over display_list
handle glMapBufferOES properly
instead of busy waiting on client when there is no space, we use semaphore
skip sending log if context switch only switches surfaces
bug fix
Use a headed linked list to avoid traversing the list for append.
Convert the shaders list in a hash to speedup search.
Destroy hash tables properly.
We have to wait for the client signal in the client not post.