Added normal mapping functionalities, but the logic of shader binding needs to be rethought.

Since currently only one shader is used, the result will be messed up when one mesh provides a normal map, while the others doesn’t.
Maybe I need to create one shader per one unique shader configurations (aka one with normal map will be allocated 1 shader, and the other one without will be allocated another one)