Resetting the Arduino and uploading the hex file is handled by a program called avrdude, which has to be patched to make use of the gpio pins.
You have a couple of options. There are some pointers and links in this topic: viewtopic.php?f=96&t=106655
All these options assume Arduino IDE 1.0.1, but in later versions it's pretty much the same. You'll have to tell Arduino IDE to use the other/newer/patched avrdude by editing the files 'programmers.txt' and 'boards.txt'.
Arduino version 1.0.1 is easiest to install and patch. The topic above describes installing everything from a single script file. I suggest you use that, unless you have a very good reason to use a newer version (if you have an Arduino Due for example, but I'm not sure if that's even going to work).
There's also this topic, that discusses Arduino IDE 1.6.5: viewtopic.php?f=66&t=92662
I don't think that version is using the gpio's, but that should be relatively easy to add by patching avrdude and pointing Arduino IDE to it. As it is, you'll have to do that yourself though.
Edit: Note that these methods bypass (and overwrite!) the bootloader. It uses/bitbangs the SPI pins to transfer data, not USART. To make your Arduino work standalone (through USB) again, upload the bootloader back.