getlantern/lantern#1974 Added timeout to NAT-PMP logic

Closes getlantern/lantern#1974
(Sorry, I had forgot to come back and finish reviewing this once done with `withtimeout`).

This latter part LGTM locally.  I'm not familiar with the big picture (esp. the part that runs external programs), but I suppose Adam is and that you've tested that this works in context.