split up some gl method overloads which stray from the spec a bit too much

"stray from the spec" meaning changing parameters, adding return values,
and/or doing other little things to help the caller out before calling
the actual gl function
some comments explaining method organization
some final helper method overload additions
comment changes