Initial implementation of Dual Numbers

Dual numbers are useful in many ways, but are typically used as part of
a physics engine where computational speed of derivatives is a great
benefit.  Dual numbers allow for automatic differentiation.