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
Why add offset again? At the end of  `_sum_sq_diff` offset is already added?