* Remove six for PY2 compatability since our dependencies are not, PY2
is legacy.
* Removed usages of utils from future/past libraries since they are
deprecated. This includes 'from __future__ ...' and 'from past...'
statements.
* Removed compatibility imports for PY2, switched from six imports to
standard library imports.
* Removed utils code blocks that handle operations depending on PY2/3
versions.
* Removed 'from __future__ ...' lines from templates/code generators
* Used PY3 syntaxes in place of PY2 compatible blocks. eg: metaclass
* refactor: Deduplicate setup_perms_for
`setup_perms_for` has two identical definitions in
frappe/utils/reset_doc.py and
frappe/patches/v7_2/setup_custom_perms.py
Remove definition from setup_custom_perms.py, use import instead
* refactor: Deduplicate get_parent_doc and set_timeline_doc
`get_parent_doc` and `set_timeline_doc` are accidentally defined twice in
frappe/core/utils.py and
frappe/core/doctype/communication/communication.py
Remove definition from communication.py, use import instead
* fix(python3): Replace urlopen import with six.moves.urllib.request.urlopen