lang: Fix bug that occurred when multiple responder funcs respond to the same key, and one of them modifies the list of responders for that key

- This commit also improves FunctionList:copy to create a new internal array.

Signed-off-by: Scott Wilson <i@scottwilson.ca>