Split Object into Renderable and Transform

The type Object previously contained the fields: position, rotation,
scale, mesh, and material. This was especially weird when you know that
the types Light and Camera each extended Object. This meant that
although lights and cameras were not going to be rendered on the scene,
they would still carry along a material and a mesh with them. This
could become unsightly for when the library would allow for multiple
lights and/or multiple cameras.

As a result, all the type annotations were updates, several files were
added, the default object file was deleted (it became the default
renderable file), and the README.md file was updated with all the right
descriptions.

The types that have changed in this iteration are :

type alias Object a = { a | guid : Int }

The new types that have been introduced in this iteration are:

type alias Viewport = {
  dimensions : {
    width : Float,
    height : Float
  }
}

type alias Transform a = { a |
  position : Vec3,
  rotation : Vec3,
  scale     : Vec3
}

type alias Renderable = Object (Transform {
  mesh : Mesh,
  material : Material
})
Updated Object model