MAJOR REVISION: This commit is the culmination of 1-2 weeks work primarily focused on finishing MLP and implementing image reconstruction via iterative projection methods.  During this development several issues were encountered, both with the code and with Visual Studio.  The issues with Visual Studio caused intermittent program crashing and an inability to find library items which the program is dependent upon.  The previous commit was established as a safeguard against potential loss of data during these failures, but it is not meant to be used as a legitimage point to revert to.  This commit comes in after resolving these subtle issues with the code and the underlying system.

- Implemented projection operator, inner product, and update vector functions to be used in iterative image reconstruction.  Update vector function was written such that BIP/Cimmino can easily be added once ART has been verified.
- Encapsulated voxel walk portion of MLP into separate functions such that forward/backprojection to find object entry/exit use the same wovel walk algorithm.
- Modified calculations of x/y/z movement direction to use entry/exit angle to account for the fact that the entry/exit paths are not connected and, thus, are not correlated.  This avoids errors when the x/y coordinate of entry/exit of recon cylinder are such that x/y_entry < x/y_exit but by the time the paths enter the object x/y_entry > x/y_exit.
- Replaced cumulative calculations of x/y/z and x/y/z_to_go in voxel walk algorith with explicit calculations, thereby avoiding the accumulation of error.
- Separated the stepping routine inside the voxel walk algorithm's while loops into separate functions which perform a single step based on the input parameters corresponding to the path characteristics.  These parameters are passed by reference so their values can be modified and the function can be called repeatedly in place.  This also allows the same voxel walk function to be used throughout program and referenced parameters are then used to perform the approriate checks and actions for the particular application.
- SC and MLP now both use the voxel walk version with explicit calculations instead of accumulative calculations, but only SC currently uses the approach where the contents of the while loops are encapsulated so a single step is taken at a time.
- Performed a pretty substantial level of cleaning, purging, and organizing of function prototypes/definitions.  This commit does not remove the previous encarnations of the improved functions since the previous commit isn't helpful these were kept as a sagequard until next the next commit.
- Many numerous other smaller modifications to existing functions, primarily those related to MLP and voxel walk , and added several new functions, many of which were symmetric additions of a function which already has a host/device implementation and now has device/host implementation as well.