use boost tuples and tie to change internals to be more functional.

ran into an issue using std::tuple with boost::simd, clang and libstdc++, so using boost tuple for now.
Merge pull request #1 from khegeman/use_tuples

use boost tuples and tie to change internals to be more functional.