Refactor class so that target key for rate hash can be change, also allow rates to be calculated for package contents instead of order line_items

- refactor of base class
- added helper classes
- made sure order or line_items where not
- used as a primary source of data
- added a way to configure new carriers that wont support description key matching on rates just like USPS