Harmonized the array2d::set_size and matrix::set_size methods.
In particular, array2d::set_size() now simply allows any row and
column sizes so long as they are non-negative.
Added a file that defines a new generic image interface for images in dlib.
This is the dlib/image_processing/generic_image.h file.  Then I changed all the
image processing functions so that they use this interface.  All the changes
are very minor, but there are just a lot of them.

Any user code that was using array2d objects to represent images will still
work.  However, this change makes it so that users can use their own custom
image objects with dlib by simply implementing a few global functions for their
image object.
Fixed a few things so they work with the new image generic interface.
Removed Ohloh link because it was slowing down the page loading.
Just fixed some funny typos in some comments.
Just removed double __ from the inclusion guard names.
removed more double __
Added a typedef to the object_detector that allows you to find out
what scanner type it is using.
Fixed a color space handling bug in resize_image()
Clarified the exact size of the HOG feature maps produced by
extract_fhog_features().  Also fixed a minor bug where empty planar HOG feature
maps had 0 planes in them rather than 31 empty planes as the spec says they
should.
Made the disabled version of pyramid_down support the new image interface.
Also added an overload of operator() for pyramid_down that takes just
a single image and downsamples it.
Fixed a bug where the imglab tool would sometimes start out with an annoyingly
small window when the first image was bigger than the screen.
Added links to the generic image definition in all the relevant abstract files.
clarified spec
updated docs
Added assignment operator for scalar float assignments.
Made inv() handle singular matrices in a more reasonable way.  Now it will make
some effort to detect them and output an identity matrix in that case.
Made svd3 faster when working on small matrices.
Updated the Python API, train_simple_object_detector() so you can call it
directly on already loaded data rather than needing to use an XML file as
input.
Changed the evaluate_detectors() routine so that it applies non-max suppression
to each detector individually.  This way one detector doesn't stomp on the
output of another detector.