This removes the double-include macro hackery that we use to define two
separate string types (nsAString and nsACString) in favor of a templated
solution.
Annotations for Valgrind and the JS hazard analysis are updated as well as
the rust binding generations for string code.
Asking for size_forward on an iterator that you haven't started reading
from is just asking for the length of the original string, so use that
instead.