Fix ups and usps to not assume the result of #/ will be a Float

* When using mathn, the  behaviour of Fixnum#/ and Bignum#/ changes
  to return Rational objects in some cases. This causes any code
  that relies on the return value being a Float that can be
  stringified to break.
Fix code formatting
Refactor handling of commercial_base option for USPS

* Move the test for commercial_base configuration into a private method
* Prepare code layout to handle commercial_plus configuration option
  with minimal changes.
Add commercial_plus configuration option for USPS
Refactor #commercial_base? and #commercial_plus? to use ivars
Extract commercial type into a private method
Extract default service into a private method
Refactor #default_service to use a hash lookup
Extract service into a private method
Extract service validity assertion into a private method
Refactor domestic rate field logic into a lookup table
Refactor international rate field logic into a lookup table
Refactor rate response handling to have less synthetic variables
Refactor commercial flag setting to use a lookup table
Refactor commercial_type to be set in #initialize

* Remove #commercial_base? and #commercial_type? which are no longer
  needed since the logic is only used in one place.