avoid evaling the value when getting its count

fixes a problem where we couldn't iterate through the overloads
of * because it had higher precedence than l3.getCount
add missing categories
allow mapToArray to function on an empty map
allow public to export non-functions
nil =>str is now nothing
+= for strings