Async error reporting for objects creation

Fixes #105. There is no draw call errors yet, but the foundation is provided.

I encapsulated some members of `Renderer` into the new `Dispatcher` struct, which allows us to tell Rust what we want to mutate and what not (notice less fighting with the compiler during the draw call).
Why are these public if the struct is private?