Revised the design and method names to reflect requirements

- MarkupCalculator has a Product
- flatMarkupRate instead of basePrice()