Made attributes use the descriptor protocol, full test coverage
Merge tox