Added support for geometry shaders (implements #428)

I need geometry shaders, so I implemented support for them. API looks like that described in my ticket. It's clean and tested commit. I corrected documentation, too.