Various optmizations

* Adds profiler library
* Inlines some functions
* Changes some things to pointer arithmetic
* Makes some static variables local
* Changes from an array of structs to several arrays
* Breaks UpdateView up into several functions
* Threads UpdateView to take advantage of spare CPU cycles on glTexSubImage