Add LevenshteinDistance to MetricSpace.
Add tuple type class instance generator.

This adds a new command to sbt:

gen-product-types

This will write 2 files (spire/algebra/tuples.scala and
spire/math/tuples.scala) to the source directory. These contain
implementations of most type classes for tuple, as a simple product (ie.
(x, a) op (y, b) = (x op y, a op b)).
Use unique names for product constructors.

Accidently used apply everywhere for implicit constructors of tuple type
class instances. This now uses the actualy type class trait name
instead.
Add tuple type class instances.

Easiest 9k line commit I've ever done.