More illuminants

I added support for more illuminants. The color conversion functions such as 'xyz2lab' now can be used with two extra parameters: illuminant and observer. If no parameters are specified the functions behave as before my changes (they default to the d65 illuminant and 2 degree observer angle). This to ensure backwards compatibility.

In addition I created tests for the new conversion features.
I wonder if it would make sense to update the illuminants data as follows:

```
{"D50": {'2': (0.9642119944211994, 1, 0.8251882845188288),
         '10': (0.9672062750333777, 1, 0.8142801513128616)},
 "D55": {'2': (0.956797052643698, 1, 0.9214805860173273),
         '10': (0.9579665682254781, 1, 0.9092525159847462)},
...
}
```

Then the code would be

```
try:
   illuminants.get(illuminant).get(observer)
except KeyError:
    ...
```