* use Mat class for Shape description
* shape specialization constant in compute shader
* wip
* wip
* test forward_inplace, add binaryop unaryop sigmoid test
* fix arm unaryop test
* fix arm binaryop test
* make shape hint optional, cast int8 to fp32, add cast test
* wip
* follow the good and old local size setting for conv1x1
* the optimal local size rewrite
* fix build on msvc
* add permute shader for all packing layout, add permute test
* concat and slice patial shape constant, slice test
* fix slice test
* interp test
* add lrn test, test packing layout implicitly
* add eltwise test
* add normalize test
* add instancenorm test
* reorg shape constant
* simple local group size partition
* add shape constant param
std::{unary|binary}_function<> are deprecated in C++11 and removed in C++17.
Actually, these were unnecessary in general. In the C++98/03 era, many user-
defined function object classes derived from these base classes in an attempt
to imitate STL conventions. However, STL containers and algorithms have never
required such inheritance (or the typedefs that they provide). Only the
function object adaptors (like bind1st()) needed such typedefs. Currently,
there are no uses of function object adapters in our codebase, so we can
eliminate the inheritance completely.