Remove useless cast in shader::bind_attribute.
Make matrices constructible from a single element.

matrix3<float> x = 1; will result in:

  [1 0 0]
  [0 1 0]
  [0 0 1]