keyboard input handler as std::function

function pointer can not be used for lambda variable catching expression
add Set method into matrix class

what, i just need it!
quaternion bug is fixed

like vector4, quaternion also has constructor initialization list
problem
camera class has some changed

even camera works properly, it needs to be optimized..