First commit of the day!

* have write the defshader macro, looks pretty cool!
  Currently compiles at macro expansion time, but can be used
  any time really.
* A few bug fixes