Multiple Shaders support

1. Same scene, multiple shaders, multiple models, different shader per
model.
2. Decoupling App space and Shader space  variables.
3. Model can send Shader non existing variables without getting an
error.
Camera control repaired

Can now use camera like back in the old days