Vector, Sphere, Ray classes + intersections
add png++ lib
Squashed 'libs/funny/' content from commit 51aedd8

git-subtree-dir: libs/funny
git-subtree-split: 51aedd8af6ef4d95e65378330247404e7d03bb48
Merge commit '1a1baeb97c0882b2a7351104f8426d76dda401c3' as 'libs/funny'
Squashed 'libs/funny/' changes from 51aedd8..1232fee

1232fee added zip and enumerate
71d45ed compatibility improvements
1dd7a11 optional: add covnersion to bool
2fa4088 add include guards and fix compilation error on g++

git-subtree-dir: libs/funny
git-subtree-split: 1232feece1740eba19517d92bd33f239976271be
Merge commit '5ae4e7af53c2c8b8198a1564e2a82ade3439bdfe'
Squashed 'libs/funny/' changes from 1232fee..3dba4ac

3dba4ac replace "use" function with call operator

git-subtree-dir: libs/funny
git-subtree-split: 3dba4ac7660afc9ccfa4c43ff9f4f1d10e28faa4
Merge commit '8b2e873002ded0bf6a0d3263e10b5519592a2178'
some more vector operations
expand Ray and Sphere tests
fix png++ compilation warnings
add libs to build script
use optional for intersection
first viewport test
viewport refactoring
added SphericalVector
add some const
intersection function for multiple spheres
intersect provides the surface normal by returning a Ray
first rendered image on gpu