Merge pull request #6 from JoAlvarez/master

implemented Transform methods
Added the ray implementation.

Defined an axially aligned voxel to help with intersection calculations.
Fixed a compiler warning in Plane(Not all paths returned a value).
Fixed a compiler error in Intersection where I wasn't passing the intersected object to the _intersectedObject.
Merge branch 'master' of https://github.com/codyjackson/voxel_engine

Conflicts:
	voxel_engine.vcxproj
	voxel_engine.vcxproj.filters
Created a make_intersection function which wraps some of the boiler plate code.

Replaced the boiler plate.
Forgot one of the places that make_intersection could've been used.
Added a make_simple_intersection. I anticipate there being cases where We'll only care about an intersection existing and not what was intersected so I wanted to make this wrapper around boost::optional.

I also made it so that you can simply call make_intersection<Plane>() and that will return an intersection that resolves to false. This was mostly done for the sake of symmetry.
Fixed the compiler error in transform. Unfortunately I can't friend the function that creates the Transform object in a portable way so I'm simply using a naked new. This of course is less efficient and exception unsafe but I don't have another particularly good alternative right now.
Added a reduce function to utility/functional.h. I think that this could be written much better but I'll leave that for another time.

I also wrote an initial implementation of an octree in Chunk. It's likely very wrong but I won't know until I instantiate it.
Pulled rendering code out of main and chunk.
Generalized rendering to be on anything that can provide get_model_matrix() and get_mesh.cpp() and pushed it into the Renderer class.
Moved window.draw() into the MainLoop(this is something people shouldn't have to worry about).
I also reworked the gl/windows headers files. I now just include glfw and it takes care of things for me.
Fixed some template compile time errors that showed themselves after I instantiated the code with find_nearest_intersection(). It compiles now and seems to sort of work but still looking into parts where it breaks.
Rewrote rendering code to support passing in a camera, mesh, model matrix as well as color for render_wireframe().
This change is necessary in order to highlight intersected voxels.
Corrected the intersection code. It appears to be fully functional now. However it's quite hideous. It really needs to be refactored and hopefully have more of it generalized.
Voxels can now be deleted from chunks. Looks like mesh generation is dog slow but I'll get to fixing that later.
Added regular voxel highlighting to make deleting easier to see.
Moved the projection matrix's znear to be closer. When it was at 0.1f if you went through a tunnel the surrounding geometry was clipped and looked quite terrible.
I now preform a check to see if I'm currently inside a boundingVoxel before dismissing a potential ray voxel intersection. This allows intersections to be calculated even when the origin of the ray is inside of a chunk. (You can delete voxels when inside of a cave.)
It's now possible to add voxels to a chunk.
voxel intersection
voxel intersection