New MapBuilder class

Intended to supersede Dictionary. Can take any key/value argument types, and
adds key/value normalization, checking and entry check.