base: bug in copy constructor of Signal

The copy constructor of Signal did not copy the
Signal::Data contents of the copy source.
This bug could survive undetected because the
compiler can optimize code in a way, that copy
constructor and destructor are not necessary
when returning by value from simple functions.
I assume that it creates the object in CPU
registers instead of RAM and reuses it instead
of copying it to save time. This way the bug
triggered first after wait_for_signal was changed
in a way, that avoided optimization.

ref #912