update the gem meta

This gets all the gem meta modernized.
modernize and update the test suite

This gets the test suite on the latest assert and modernizes how
the tests are written and organized.
reorg and cleanup the lib code

Just modernizing and cleaning up a bit.