Miniupnp

@skivvies, can you review this before I merge it? (Please don't actually merge this pull request; I want to rebase it on top of whatever the current master is first)