main: set organization name, domain, and app name
MainWindow: move into widgets module

I like it better to have an almost trivial "main" entrypoint.
TILE_PALETTES: add a few more standard palettes

This almost gives enough standard palettes to pick a few at first.
ROMDockable: hide byte-shifting buttons for CHR browsing

It really is only needed for PRG browsing and is somewhat confusing
otherwise.
NES_ROM: limit byte-shifting functions to 8 bytes

There's no need to move beyond those 8 bytes in either direction, and
it simplifies some things to assume this limit.
main: move main function out of global namespace

Just a bit of housekeeping.
NES_ROM: allow ROMs to be provided as zip files

Bit barebones, but it works well enough for my collection. Some error
handling is now enabled. Starting to look like a real program!
ROMDockable: show in title bar if we're looking at the ROM's PRG or CHR

This is a useful bit of information.
hgignore: add zip files

Often NES ROMs are used directly from zip files.
NES_ROM: implement circular byte shifting

For ROMs that have no CHR, sometimes the tiles aren't aligned to
16-byte boundaries. Circularly shifting the PRG data may be necessary
to get proper tiles.

In order to do so efficiently, this also requires changing the Tile
object to be more like a cached look into the underlying tile data.
Thus, I turned its `pixmap` and the `raw_tile` properties into
descriptors so I can properly clear those cached properties and can
thus lazily update them, as required by the update functions.
PaletteComboBox: new widget in ROM canvas toolbar

This allows picking from a pre-defined set of palettes.

The styling isn't great yet, and I may need to fix this later.
refactor: move widgets into their own module

This allows multiple ROM canvases to be opened at once, and each one
has its own palette, which can change the palette in the tile picker.
MainWindow: rename central scroll widget
MainWindow: increase default size

This is just a stop-gap until I implement saving and restoring the
current window layout.
refactor: move the NES ROM manipulation code into its own module

Also, rename the color module to colour 'cause I got tired of
misspelling it when I didn't have to.
Tile: set new palette by copy

Otherwise, we may end up modifying another tile's palette.
ScrollAreaWithVerticalBar: new class workaround

I am committing this because I can't figure out a better way.

https://stackoverflow.com/questions/57898865/why-is-qscrollarea-not-taking-vertical-scroll-bar-width-into-account
ColourButton: tighten space between the buttons

Turns out that it was possible to resize the dialogue box and have the
buttons move away. I also want them to be all close together in a
tight little palette widget on the ad-hoc toolbar for the ROM viewer
widget.
RomWidget: use the rom's filename as title

I gotta get around to properly encapsulating all this stuff and
properly wiring up its signals with everything else.
RomWidget: add column increase/decrease buttons

It now looks more like a toolbar than a palette, so I'm also changing
its name.
Next