update surfaceflinger, libui and libagl to the new gralloc api

- Currently the lock/unlock path is naive and is done for each drawing operation (glDrawElements and glDrawArrays). this should be improved eventually.
- factor all the lock/unlock code in SurfaceBuffer.
- fixed "showupdate" so it works even when we don't have preserving eglSwapBuffers().
- improved the situation with the dirty-region and fixed a problem that caused GL apps to not update.
- make use of LightRefBase() where needed, instead of duplicating its implementation
- add LightRefBase::getStrongCount()
- renamed EGLNativeWindowSurface.cpp to FramebufferNativeWindow.cpp

- disabled copybits test, since it clashes with the new gralloc api

- Camera/Video will be fixed later when we rework the overlay apis
diff --git a/libs/surfaceflinger/LayerBitmap.cpp b/libs/surfaceflinger/LayerBitmap.cpp
index d633a2d..38d4bcf 100644
--- a/libs/surfaceflinger/LayerBitmap.cpp
+++ b/libs/surfaceflinger/LayerBitmap.cpp
@@ -52,10 +52,7 @@
 Buffer::~Buffer()
 {
     if (handle) {
-        BufferAllocator& allocator = BufferAllocator::get();
-        if (usage & BufferAllocator::USAGE_SW_READ_MASK) {
-            allocator.unmap(handle);
-        }
+        BufferAllocator& allocator(BufferAllocator::get());
         allocator.free(handle);
     }
 }
@@ -107,9 +104,6 @@
     err = allocator.alloc(w, h, format, usage, &handle, &stride);
     
     if (err == NO_ERROR) {
-        if (usage & BufferAllocator::USAGE_SW_READ_MASK) {
-            err = allocator.map(handle, &bits);
-        }
         if (err == NO_ERROR) {
             width  = w;
             height = h;
@@ -120,31 +114,22 @@
     return err;
 }
 
-status_t Buffer::getBitmapSurface(copybit_image_t* img) const
+status_t Buffer::lock(GGLSurface* sur, uint32_t usage) 
 {
-    img->w = stride  ?: width;
-    img->h = mVStride ?: height;
-    img->format = format;
-    
-    // FIXME: this should use a native_handle
-    img->offset = 0;    
-    img->base = bits;
-    img->fd = getHandle()->data[0];
-    
-    return NO_ERROR;
+    status_t res = SurfaceBuffer::lock(usage);
+    if (res == NO_ERROR && sur) {
+        sur->version = sizeof(GGLSurface);
+        sur->width = width;
+        sur->height = height;
+        sur->stride = stride;
+        sur->format = format;
+        sur->vstride = mVStride;
+        sur->data = static_cast<GGLubyte*>(bits);
+    }
+    return res;
 }
 
-status_t Buffer::getBitmapSurface(GGLSurface* sur) const
-{
-    sur->version = sizeof(GGLSurface);
-    sur->width = width;
-    sur->height = height;
-    sur->stride = stride;
-    sur->format = format;
-    sur->vstride = mVStride;
-    sur->data = static_cast<GGLubyte*>(bits);
-    return NO_ERROR;
-}
+
 
 // ===========================================================================
 // LayerBitmap