~ store dimension info in the state object so any object can access it
~ move background Cell generation into the Load object
~ load the scroll buffer in the main draw method (this is JIT background loading)
~ split init stuff from main in a couple objects
~ add main background loader and background scroll buffer loader
~ used dimensions stored in object to calculate valid scroll directions so that the cells property can be uninitialized (allows for JIT rendering)