complete re-write of the projection analysis and transformation. Removed visitor and replaced with recursive call.  This should support any F# expression, and will make it easier when we need to do fancier things with the projection in the future

Fixes #75

Note this has not been extensively tested yet but it appears to work :D