Misc clean up

* 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.