Major rewrite to add SpriteBatchSettings

Also lots and lots of smaller polishes, private keywords, namespacing...