1. Rename uniformId to batchId, refine batch draw check logic, not use xxhash to compute uniforms id
2. Material works, not check all cpp-tests, but some 2d/3d material works fine
3. Shader load/cache API improvements.
4. BREAK compatibliity: Node::setProgramState change parameter needsRetain to ownPS and value inverted.
5. custom vertexLayout setup: add new API ProgramState::getMutableVertexLayout, mark ProgramState::setVertexAttrib deprecated.
6. ProgramManager registerCustomProgram change to gen progId by vsName, fsName
with xxhash64, if register succed, user can load it by progId with `loadProgram`
7. Add API ProgramManager::loadProgram for loading builtin by progType or
loding a custom program by id
8. Add API ProgramManager::loadProgram to load program by vsName, fsName
immediately without register as CUSTOM_PROGRAM
9. Add API Node::setProgramStateByProgramId(progTypeOrId); for set programState with
programType or programId explicit.
10. Migrate material load logic
In order to allow unity builds we need to avoiding "using namespace"
at file scope, #undef our file-specific #defines, and avoid having
static functions with identical name and signature.
1. Add compiled shader dir `axslc` to search path for win32,linux
2. ProgramManager: register shader program by shader name
3. modify all shader define from sources to name in Shader.cpp/Shader.hpp
4. Remove shader version define and precision decls for GLES
- Queue a priority operation in render thread, even through app in background
- Please do logic in callback, don't update ui or any other render state
usage
```
Director::getInstance()->getOpenGLView()->queueOperation([](void* param){
// do somethings for logic only(Don't update render state or UI)
});
```