This is an attempt to use concepts and constraints rather than ranges::. It builds and run the tests I ran on x86_64 Linux decently (albeit I'm still new at doing this). I wanted to get a feel for whether or not this had been done right: Thoughts?