Account class refactoring

Initial refactoring of the account class.
- Refactored account to be abstract and delegate all
 account interest calculations to subclasses.