First attempt at adding to the boost API

Exposes the test method, but takes in images and bounding boxes.
Seems fairly simply to extend the API
Wrap the dlib point for Python
Add a list of points

Also, change point x and y to be properties
Refactor rgb_pixel out of object detection

Also, move the vectorize template into its own header to
stop having to declare it again in vector.
Update the gitignore to ignore vim and idea
Add a new conversion header

This deals with converting python objects to dlib objects
Add wrappers for the shape predictors

This includes the full_object_detection, a new struct in the same
vein as the simple_object_detector_training_options and of
course, the shape predictor classes themselves.

All of training, fitting and testing are wrapped.
Python3 friendly printing in examples
Add example of testing detector using existing data
Make shape predictor pickleable

Fix typo as well
Sort out PEP8 issues in the examples
Add rendering of faces (lines)

Can either be a list of full_object_detections or a single
full_object_detection. I couldn't get the vector type to work
for full_object_detection due to a template error.
Refactor the GUI code out

I also cleaned up a bunch of code. I'm not sure why the
simple_object_detector was keeping track of the upsample amount,
since it can't even be passed as an argument to the constructor.
Therefore, I removed the simple_object_detector_py and the second
declaration of the hog object detector. I also changed the
view code to optionally take keyword args of color and added
a single view of a rectangle.

Finally, I added viewing of the shape parts.
 Properly handle turning the GUI off
Add a save method to detectors and predictors

Also, removed the saving of the upsample which I missed from
before (since I'm not using the struct now). I understand why
the upsample was being saved, but I don't necessarily agree it
is particularly useful as you should really be upsampling on
a case by case basis at test time.
Update the interface to be more Pythonic

This is the biggest change so far. Now, there are two different
classes of interface. One where you pass ONLY file paths,
and one where you pass ONLY Python objects.

The file paths are maintained to keep a matching interface with
the C++ examples of dlib. So shape predicition and object
detection can be trained using the dlib XML file paths and then
serialize the detectors to disk.

Shape prediction and object detection can also be trained using
numpy arrays and in-memory objects. In this case, the predictor
and detector objects are returned from the training functions.
To facilitate serializing these objects, they now have a 'save'
method.

Tetsing follows a similar pattern, in that it can take either XML
files are or in-memory objects. I also added back the concept of
upsampling during testing to make amends for removing the
simple_object_detector_py struct.
Change logic for upsampling printing
Add facial landmark prediction examples for Python
Re-add the cached object detector

A little bit hacky, but should be fine. Supports both fhog
detectors and the "cached" simple_object_detector. Also, maintains
the upscale parameter for testing
The nu parameter of the shape_predictor must be in the range (0,1].
I changed the spec to reflect this.