Add support for EL 6

This huge refactor keeps all of the same functionality and adds support
for EL 6 while improving style and ability to add new platforms. It also
adds a harness for spec testing.