Updating Spire to use Eigen.

Being mindful of alignment issues in std::vector. We will need to use a
custom allocator if we use std::map.