Make frame_add safe for adding a frame to itself

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.
Merge to fix an incorrect commit msg

And because I haven't got the hang of checking everything is exactly right
before I push to Github.