Simple implementation of persistent map on an array
 
 Note that instances of this class are constant values
 i.e. add/remove etc return new values
 
 Copies array on every change, so only appropriate for _very_small_ maps
 
 null keys and values are ok, but you won't be able to distinguish a null value via valAt - use contains/entryAt