Split GlContext class and introduced ContextManager class

I need to remove the "Gl" prefix from GlContext class but as it would conflict with the current Context class, I chose another strategy.
Instead, I will rename it to ContextImpl but before I prefer to strip stuff that wouldn't perfectly fit in a class named like that.
ContextManager is this new class with a proper name where all static functions found in GlContext go.

This change involes two minor modifications in GlContext API:
- GlContext::initialize() has been made public since ContextManager needs to intialize contexts
- Several private accessors have been added to ContextManager so GlContext can have access to local variables
Renamed GlContext class to ContextImpl

As the DirectX back-end is coming, we have to refer to graphics contexts in general instead of OpenGL contexts.
Added DirectX implementation of graphics context
Fixed typo in documentation (Unix/Display.hpp)
Added ContextHandle.hpp
Added cmake option SFML_GRAPHICS_BACKEND to choose either OpenGL or DirectX
Implemented ContextImpl::getContextHandle()
Implemented getContextHandle() in Context, Window and RenderTexture class
Added DirectX implementation of Texture
Added DirectX implementation of RenderTexture
Implemented getContextHandle() in Resource
Added DirectX implementation of Shader
Fixed typo in documentation (Window/WindowImpl.hpp)
Removed "Gl" prefix from pushStates(), popStates() and resetStates() methods

As the DirectX back-end is coming, we have to refer to graphics states in general instead of OpenGL states.
Added DirectX implementation of RenderWindow
Renamed glStatesSet attribute to statesSet

As the DirectX back-end is coming, we have to refer to graphics states in general instead of OpenGL states.
Added DirectX implementation of RenderTarget
Updated CMake scripts to find, include and link against DirectX
Modified SFML/Config.hpp to define SFML_OPENGL macro by default
[DirectX] Fixed number of primitives not counted