3dapi: various changes to baseshader

Remove the BaseShader#Input class (it required to create a new instance for every shader), instead use an int again to identify an uniform and use a Validator and Setter interface for each uniform (which can be reused amongst shaders). Updated DefaultShader to use this, which practically makes each setter a small program that can be reused or overwritten.

Also:
- Use Renderable instead of three long masks to compare shaders/renderables etc
- Add blended member to BlendingAttribute (used for sorting)
- Add DepthTestAttribute to control depth writing/testing