gfx: 1bpp<->2bpp conversion

this is the simplest way to support 1bpp without rewriting a lot
refactor png-to-2bpp conversion
tabs to spaces in map_editor.py

This is to maintain consistency in python source code formatting in the
project.
move import statements to top of map_editor.py
get PIL from pypi to run map editor
make ConfigException accessible

Apparently the "exceptions" name is already used for another module.
change RomStr usage in gfx.py to use RomStr.load
factor out global configs in map_editor.py
only set global constants for eval

Although I am not sure that using eval is a good idea in the first
place... it should go away.
fix up map_editor.py extra newlines
use explicit import of Tkinter components
replace print with python logging
also import TclError into map_editor.py
use pillow instead of PIL in requirements.txt
clean up more imports in map_editor.py
gfx: rewrite lots
gfx: 1bpp-to-png

also dont assume any dimension matches in png conversion
gfx: rewrite lz commands and comments
gfx: direct png-to-1bpp
gfx: make sure rectangular images are also divisible into 8x8 tiles