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!
http://doc.rust-lang.org/std/bitflags/

~~~rust
bitflags! {
    flags Comparison: u8 {
        static Less = 0b100,
        static Equal = 0b010,
        static Greater = 0b001
    }
}
~~~

To use:

~~~rust
let c = Less | Equal;
assert!(c.contains(Less));
~~~