Basic rasterizer states

Provided for the review and to ignite the discussion.
Partially addresses #51. Features:
  * Basic rasterizer state infrastructure
  * Primitive state
  * Depth state
  * Blend state

It doesn't expose everything, striking for a reasonable balance in usability/power. For instance, it doesn't support rendering front faces as facets but back faces as lines. Blend states are going to need a per-draw-buffer selector, will be done in the future work. It's also imperfect that the blend state includes the constant color even though none of the factors may really need it.

Note that no caching is done on either side, so all the states are set with each draw call. I'm also a bit concerned about passing `Option<Something>` to the device, since we are copying the whole struct even if it's not needed.

Most of all I'm not satisfied with the `Factor` and `Comparison` types. They would be more useful if they just copied GL enums, but I wanted to experiment first if we can take advantage of the Rust types system to make them more expressive. Any feedback is greatly appreciated!
I know, right?! That's the cost of the bind-less approach...
Code I see at work typically executes in the following fashion:
```
SetShaderParametersManually();
SetRasterizerStates();
SetDepthStencilStates();
SetBlendStates();
 LockTargets();
  BindShader();
   DrawMesh();
  UnbindShader();
 UnlockTargets();
RestoreStates();
```
It does pretty much what we do (with a much higher SYF factor), but is spread over multiple lines. What we can do is - merge some of the parameters.
For instance, `Mesh`, `MeshSlice`, and possibly the shader program are supposed to come bundled as `SubMesh`. Rasterizer states are often correlated with the program in use, so perhaps we can keep it with a program at all times? That would reduce the number of parameters to about 4.