Refactored Decimal with a Calculator interface.

This adds supports for GMP in addition to BC Math, and opens the door for a future native implementation.