How to switch power of microcontroller by button?
How off do you really need off to be?  Many modern microcontrollers have sleep current well below the self-discharge current of even small batteries.  You can have the pushbutton simply drive the I/O pin of the micro, which then toggles itself between sleep and active mode each button press.  Some debouncing will be needed, but that all doable in the firmware too.

This sort of on/off method is getting pretty common nowadays.  When it only takes a &micro;A, a microcontroller doesn't need to be truly off, just asleep, which it can do under its own control.  The button line has to be wired to something that can cause the micro to wake up from sleep, but just about every micro has at least one of those, usually several.