Branch/3d graph tool

@eric79 @kadst43 @scottnc27603 

I'm comfortable merging this in as is, but there are some TODOs that should be done at some point. Take a look at this list and let me know if you think these should be done right now:

TODO:
 - Validate the function ( ensure that there are no syntax errors )
 - Allow x axis functions ( `x=f(n)` rather than `n=f(x); var a = x; x = n; n = a` where `n` is `y` or `z` )
 - Translate from plain text functions to javascript functions ( "y = sin(x)" would be translated to `y = Math.sin( x );` )
 - Dynamically modify existing lines
 - Label the axes and possibly the lines
 - Point and line selection
 - Break lines on asymptotes
 - Allow user to set line roundness ( currently the mesh is made up of a series of planes with four points, this would add more points via a property )

I'm sure there are others, but those are the ones that jump out at me right now