Introduce macros.hpp (engine-wide macros)

* macros.hpp: Introduce NOM_DELETE_PTR, NOM_DELETE_SMART_PTR.
* types.hpp: Relocate the defined macros to macros.hpp.
Misc clean up on Gradient & Texture

* Gradient: Remove assignment, unary & pointer operator overloads;
assignment is not needed when not dealing with pointers or custom
copying needs (we are not). Unary & pointer operators were never used.

* Gradient: Fix bug in valid method; it now requires both position
& size to not be null to be valid. A check for validity has been
added in ::update.

* Gradient: Change vector of rectangles to hold Rectangle, not
IDrawable pointers.

* Gradient: Remove updated, set_updated methods & implementation; not
necessary as we do not expect update to be called within a loop
needlessly.

* SDL_helpers: Remove SDL_RENDERER declarations; this corrects a
compiler err -- incomplete data type -- that occurs when trying to
use the pointer within RenderWindow::context() with SDL functions
directly.

* Texture: Introduce free_texture method.
* Texture: Introduce ::size getter && ::set_size.