Add support for 3D images in SLIC segmentation

Hi guys!

I finally finished the mod for SLIC to support 3D images. So now all combinations of gray/3-channel and 2D/3D can be segmented with SLIC! It's pretty, erm, slick. ;) The PR includes new tests for 3D grayscale and 3D RGB.

Note that the use of grayscale is now determined by a `multichannel=False` kwarg. By default, `slic()` expects RGB images.

Note also that I moved everything but the inner loop to Python. This makes it easier to debug, which was getting to be a huge pain.