Fixed a bug in Material::update_program, simplified uniform block usage.

Fixed: Material::update_program only used the program when called first
time.

Uniform blocks now have their binding points as static constants.

Moved light_count uniform from Instance block to Lights block.