RayHandler re-factoring with minor changes in Light

No breaking changes were done.

What were done:
A. Fixed Light#remove() not removing disabled lights from rayHandler's lights array
B. Fixed/added/updated most of Javadocs
C. Light now implements Disposable and RayHandler now uses 
```java
    light.dispose()
```
instead of old way light disposing:
```java
    light.someField.dispose()
    light.someOtherField.dispose()
```
D. Fixed some typos, broken indentations, and made some code to look more clear and pretty

**I know that 'pretty' is quite a relative thing so any comments/feedbacks are welcome!**
If this will be useful to anyone going to update other files. If no, possibly going to do it anyway at least on my local branch...

E. Also a few TODOs added for discussion as some things (like *useDiffuse*) not fully clear to me from the philosophic side (e.g. why it is public and have a straight setter).
color.set() internally call color.clam() method, so it's more correct to use it, instead of raw set of color channels