Refspec getter/setters

This is much more pythonic than getter/setter function pairs. I've left the functions for backward compatibility, but they should be removed before the minor release. The functions use the attributes' code, so I've left the tests mostly alone, and it should convert over painlessly when we remove the functions.

I've also made sure we fail gracefully on unexpected input.