Is it possible to implement a fail-proof watchdog timer in software?
I have no idea what a Mediatek Linkit One board is (and you didn't provide a link), but, in general, you can't. If your program hangs how will the watchdog code be executed?

Watchdogs usually have to be implemented in hardware - either internally by a section of the CPU that runs independently of the user program or, if that can't be done, an external watchdog is employed. Your program would reset the external watchdog periodically by sending a pulse. If the external watchdog doesn't see a transition within a certain time then a reset is generated.