protected I2C singleton from copy constructors

There was a bug in my I2C handler, which was supposed to be a singleton,
that allowed another instance to be created through the default copy
constructor and default = operator.

I explicitly declared those two things private.  It now throws a
compiler error if someone attempts to initialize it improperly with
something like this (notice that it is not declared as a reference type;
this is bad and will summon a constructor):
my_i2c_handler i2c_ref = my_i2c_handler::get_instance();

Also changed the argument type to the function queue's "add function to
queue".  Instead of using "void *" as the type for the function pointer
argument, which is implicit and compiler dependent, I changed it to
"void (*function_pointer)(void)", which is explicit and compiler safe.