Add support for recalculation of total bill when tip is changed and
refactored to reuse bill calculation code