startup code now calls init.c functions before main and fini.c functions after main
simplifying gpiopin class interface, going to add interrupts next