ignore wram.asm non-existence

The IOError is now caught and swallowed by read_wram_sections.
fix the bss/wram section default

The default section needs to include a list of labels (even if the list
is empty) because downstream code assumes that the section contains a
key called "labels" that has a value associated with a list.
make read_hram_constants to eat hram.asm IOError
make read_gbhw_constants consume an IOError
combine hram/gbhw readers into read_constants

This consolidates read_hram_constants and read_gbhw_constants.
add mock into requirements.txt

(for unit testing)
write some TODO comments in wram.py
ignore python/egg output