Added bignum & input argument handling support

Prettified (?) the code a bit, and added the use of the
boost::program_options for improved program input argument handling.
Also added the use of boost::lexical_cast for type-safe string to number
conversion, and added arbitrary precision integers and floats using
boost::multiprecision.