Make frame_add safe for a "+=" type operation

Previously calling ptw_frame_add(one, one, two) would be problematic if
there was a cast needed, since accessing the values in frame one could be
taken to be a float at one point and an int at others, and we'd get
garbage out.

Also wrote an initial add_list function, which oughtn't to have been done
in this commit, but I was dopey and then it was the end of the day and I
needed to push it to the remote so I could work on it had home too.  Oops.