Standardize on six's improved with_metaclass()

The codebase was using two implementations of with_metaclass: one from six, and
one described here:
http://lucumr.pocoo.org/2013/5/21/porting-to-python-3-redux/#metaclass-syntax-changes

The six library adopted the above implementation of with_metaclass:
https://bitbucket.org/gutworth/six/commits/a952c9c7cb55235e37e09a2187a8e0044cfb489f?at=default
and later improved it (available in six 1.7.3):
https://bitbucket.org/gutworth/six/commits/eb096fc7ae5b48d67374359beff3338bfee3fc1d?at=default