Basic error handling

Previously, cyrasterize would hard exit in C code if it failed to initialise everything (GLFW context, GLFW window and GLEW). Now it at least records (via an enum) what part of the process failed and the `CyRasterizer` class checks for this raising a Python RuntimeError if anything goes wrong.