Only call orenew_vector if really required.

  It is better to check if it is a nop call because orenew_vector will
hold a global mutex while figuring out it is a nop.
Change default/accepted gl texture format to unsigned byte

  This is still subject to some changes, as it is still in "scratch mode",
to better adapt to the language, for example, remove arguments or add more
types.
Use a single format argument for gl texture related builtins.

  The code should just not support indexed modes and/or only supported
unsigned byte rgb or rbga textures for the sake of simplicity.
Add several new surface_t utility builtin functions.

  These new builtins allow creating rgb and rgba surfaces (only accept
8 bits per channel), pulling a surface (that may be in some framebuffer
specific format) and pushing it back, as well as simple blitting helpers.
  New fields were added to the builtin surface_t object, to know the
masks (may be useful to write code without needing to know endianess),
bytes per pixel, and the pixels field that is only valid for the new
sdl_push_surface call and can be fetched with the new sdl_pull_surface
call.