Merge pull request #69 from yenatch/master

Macro handling in read_bss_sections.
gfx: Read image metadata from filenames where applicable.

png has some incompatibilities with 2bpp. Among them:
- 2bpp is tiled, and can be arranged arbitrarily
- 2bpp does not have associated palette data
- png must be rectangular
- png must have specific dimensions

The requirements for an image vary, and are unwritten. One conversion method will not work for all images.

To resolve these conflicts metadata can be attached to images and related data.
So as to not create additional files without changing the file content, the filename is used.

Usage: metadata is defined as pseudoextensions.
.w<width>
	- force width to <width> px
.h<height>
	- force height to <height> px
.t<num>
	- pad the image by <num> tiles so the resulting png can be rectangular
	- remove said tiles when converting back to 2bpp

Example:
	gfx/title/logo.w160.t4.{lz,2bpp,png}
	- width 160px
	- pad by 4 tiles
gfx: Prefer heights not divisible by 8, rather than forcing them.

Some images do not occupy a full tile.
In pokered, gfx/minimize_pic.1bpp is 8x5. This is still rectangular.

Previously, converting this image would cause an error.
gfx: Redo command-line interface, format handling, filename arguments.

- Use argparse and less redundant commands.
- Make .lz independent of content. Allows tilemaps to not be images.
- Add .[w]x[h] filename argument for transposed images.
- Add .interleave filename argument for 8x16 sprites.
- Refactor some conversion code.
Merge pull request #70 from yenatch/master

Straightforward label handling in crystal.py.
Merge pull request #71 from yenatch/gfx

Image metadata and simpler gfx.py usage
Transpose images by height from 2bpp to png and width from png to 2bpp.

This fixes transposing non-square images.