Got Impersonation mixin working properly

Impersonation fixes
* Had to change can_cls to not override current_user, but still need to override for creation step, so filtered out on can_cls call
* Fixed the query to use actual user table, not sure how that was supposed to work...

Python 3.3 and 2.6
* Pulled out the metaclass and used six to apply it
* Changed the assert raises to not use a context manager for 2.6
* Had to change bits of the metaclass to use itervalues and a list constructor

Misc
* Added original traceback printing support to the exception information for convenience of loggin