Make SpriteBatch extendable.

Minor changes in modifiers allow developers to write their own batch, using SpriteBatch as a foundation and, depending on the extent of modification, still be useable library-wide in place of a regular SpriteBatch.