Rewrote Shapeless to use Scala's Permutation function instead of my crappy attempt.  Code looks a lot cleaner.