run 2to3 to convert code to py3
py3 don't have Exception.message any more.

use args[0] instead
tune tests to make py2 and py3 both passes all

in py3, dict.items() have no exact order so I add a sorted to make sure
it gives consistent result
should support py3 now. add travis ci.