Crystal Caves: Update tile mapping to cover episode 1

This is for reading maps only, the mapping still needs to be reversed so maps
can be written again.
Crystal Caves: Finish mapping all bare tile codes in episode 1
tests: Give compile error instead of failed test if some constants undefined
Crystal Caves: Add write support for levels, including tests

Tests currently fail as there is some ambiguity as to which tile codes to use
when, so hopefully this will be resolved eventually.
Add some const correctness
Crystal Caves: Create a single mapping table to use for everything

This replaces the code used to read, write and list valid map tiles.  A new
test is also introduced, to account for times when the output should not match
the input - in this case, when vine tiles are written back out in a better way.
Crystal Caves: Use map flags for all types

This fixes the dropping 'danger' sign not having a down arrow in Camoto Studio.
Crystal Caves: small bug fixes, make 4x2 and 3x2 yellow boxes save correctly