Texture synthesis implementation of Efros and Leung's algorithm

NumPy implementation of Efros and Leung's algorithm. Currently, refraining from Cython implementation since profiling results show that the majority of the time is spent on ``np.einsum``. 

Waiting for some review on this part. Options for improving speed:
- As Emma suggested, precompute ``mean`` of all the patches. Then may be, use only the top 10 closest matches to actually compute the SSD
- Patch based instead of pixel based
- Restrict the template matching to a certain region around the pixel to be inpainted (say, 100X100): not the best option

The results are great for generating recurring textures in the image and in this regards is better than FMM as well, although a little slower. Check the example in the docstring, texture synthesis performed on ``skimage.data.checkerboard`` Algorithm is able to perfectly reconstruct the texture maintaining the crisp edges.

Docstring, unit tests, general example and an interactive demo added.

@emmanuelle
The input image to `_sum_sq_diff` is cropped from all sides by `offset`. So the coordinates returned should have the same added `offset`. In the function, `offset` is mainly to get the center of the patch.