Standardize on six's 1.7.3 with_metaclass() implementation

The codebase was referencing 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

cms.utils.compat.metaclasses.with_metaclass(): updated from six 1.7.3