Use dynamic programming for Levenshtein distance.

This was originally created for our fork (pull request at https://github.com/jigish/go-flags/pull/1); the two have since diverged a bit, but I'm pretty sure this change will work here.