Working on a backport of Python 3.3's exception hierarchy

Fileutils will then automatically raise exceptions from this hierarchy on 2.x etc.
Merge commit 'a837607c42b94a57d15ccd6c0b0a451f6114f535'