Recursive object and array comparison