Added a map datatype which currently passes 2/4 unit tests.

-Peter Mawhorter
The map datatype passes all of its (bugfixed) test cases! The big bug
fixed in map.c was va_start/end calls inside of instead of outside of an
inner loop in both m_contains_key and m_get_value. Unit tests have now
also been rejiggered to support returning different error values from
different parts of the test for minimal debuggability.

-Peter Mawhorter