Decide about used extensions on only one place.

Having the same branch cascade twice for debug output and for actual
feature selection is not good for maintenance. Put the extensions into
some list and then make it unique instead.
Moved global data from framebuffer classes to per-context state.

On the way to unify and reduce the "Using optional features" messages.
Moved global data from texture classes to per-context state.
Moved global data from shader classes to per-context state.
Moved global data from Buffer class to per-context state.
Moved global data from Mesh class to per-context state.
Moved global data from Renderer class to per-context state.
doc: actually we have a way to retrieve object labels.

Not sure why I forgot it.
Removed Buffer::maxVertexAttributeBindings().

This queries limit for ARB_vertex_attrib_binding extension, which isn't
and probably won't be implemented in near future.
Enable Buffer::invalidate*Data() on ES.

This smells fishy. The function _does have_ a no-op fallback
implementation to remove the need to wrap everything with an #ifdef
and/or extension check, so why I did exactly that everywhere?
Actually implement the fallback for Renderer::resetNotificationStrategy().

It was documented and all, but wasn't ever implemented.