MaterialGroup is much more organized and robust

Also fixed an oversight in Renderable::GetBufferGroup for index
out-of-bounds.

Also graphcis::System::Update is now const to reflect that is won't
modify entity/component state.