This is a better way to accomplish the box-blur cl operation by using ocl's
local memory from the opencv source code. It use the local shared memory to
reduce global memory access, which significantly reduces the kernel's processing
time by 70 percent compared to the original one. Because of the barriers and
local worksize limitation, processing with a radius larger than 110 becomes
slower than original algorithm, so I keep the original kernels in order to deal
with box-blur with radius larger than 110.
All the tests are based on Intel Beginet and Intel IvyBridge CPU and GPU.

v2:add kernel attribute to restrict the local size to (256,1,1).

Signed-off-by: Yongjia Zhang<yongjia.zhang@intel.com>
tests: Add test case for backend file's path
buffer: Inherit path from backend at construction

Also mark BackendFile's path as construct only because there
is no machinery to change it after construction.
Fix type macros for OperationSource
GeglNode: Reconnect all consumers when the op changes (fixes bug 723114)
tests: Add test case for node reconnect

Not a great test case because gegl_node_get_producer()
has some magic in it that may cause trouble.
Move Meta redirect logic out of GeglNode

Handle the value propagation in OperationMeta instead of having
a special case in Node.
TileHandlerChain: Remove special handling of Cache

The extra destructor logic is no longer necessary.
TileHandlerCache: Always discard tiles in dispose()

Previously GeglBuffer always called _reinit() in its
destructor, so the cache would always be empty by the
time _dispose() was called.
Remove proxy-nop nodes with their pads
Add gegl_operation_meta_watch_node

Passing nodes to gegl_operation_meta_watch_node or
gegl_operation_meta_watch_nodes will cause them to
be removed when the operation is destroyed. This
prevents the meta operation's children from leaking
if the root node's operation changes.

The watch holds a weak reference to the watched node,
so it is also safe to remove them prior to destroying
the operation.
operations: Use watch() to clean up the child nodes of meta ops
Unset ->source when removing a handler from the chain

Otherwise this reference may outlive the buffer and
cause the chain to get destroyed out of order.
Don't use a static buffer for node_get_debug_name (bug 723309)
gegl: changed GeglTileBackendSwap to use gegl_tile_dup instead of copying data to the writer queue.
TileHandlerChain: Simplify dispose
Mark gegl_init.argv as unowned for vala
Use the correct rect for abyss of sub-buffers (bug 723419)

This does not impact normal buffers because their abyss and extent
rects are synchronized.
Make meta nodes return the cache of their proxy (bug 723365)
Remove dead code in GeglOperation

Graph meta nodes are never traversed so calling
get_invalidated_by_change() is not meaningful.