Some basic Image functions rewrote with matrix-api

* vectorz implementation accepts only scalar values, so perhaps the
use of protocols for different types of images is a better approach.
Again, using the structure of matrix for each color channel
Map operations over the color channels; to-buffered-image
Fixed some indexing errors; color space conversion

* The test is not given the right result.
Fixed to-buffered-image (dorun); some optimizations
More optimizations using java arrays; neighbour pixels
Faster functions to apply a f over all pixels; reflection warnings

* grid-map seems to be more suitable to swap an image (no temporary
vector is needed to store the pixels values).
* get-pixel can get the value of just a specific channel.
Use of Java primitive arrays to store an image; core function
load-image is done; function to set a pixel's value

* Compare the impact on the performance using the set function to
load an image.
Macros to perform aget and aset efficiently for mult dim arrays
Fixed value casting; macro for two dimensional array cloning
Use of macros to get and set pixels, performance optimisation

* Think about abolishing the type of the image. The number of channels is
enough.
Unnecessary warnings from the dependencies
Functions to return the dimension of an image
Switching some low level functions for higher ones
Function to copy an image; fixed the function to clone a primitive array
Fast version of the binarize function

* It is faster to apply the threshold for a whole channel at a time.
Changes to support a 3D primitive array as data storage

* Now the image's data is composed of a 3 dimensional array: rows, columns 
and color channel.
An image file is loaded as a 3 dimensinal matrix
Improvement of grid-apply performance; fixed make-image

* grid-apply is faster without generating a sequence as a result. Perhaps
writting two types of the function (side effects and not) is a good idea.